Match ends, Peterborough United 1, Oxford United 2.
Oxford closed to within six points of a Sky Bet League One play-off place with victory at Peterborough - and all but ended the hosts' top-six hopes in the process.
Michael Appleton's men hit the front on 23 minutes at the ABAX Stadium when Phil Edwards headed in a Rob Hall corner.
And they doubled their advantage when Conor McAleny tucked away a slick Chris Maguire pass with 19 minutes to go.
The goalscorer was fortunate to still be on the pitch after escaping with a yellow card from referee Mark Heywood when throwing Jack Baldwin to the floor in first-half stoppage time.
It was a success which featured a series of fine saves from Oxford goalkeeper Simon Eastwood, whose best contribution was keeping out an early Leo Da Silva Lopes effort.
Eastwood also denied Chris Forrester and Craig Mackail-Smith early in the second period as Posh chased a leveller.
Even when he was beaten, Andrew Hughes headed against the crossbar before Posh saw Da Silva Lopes dismissed late on for collecting a second caution.
They did net in stoppage time as Mackail-Smith hit his 100th goal for the club, but it was not enough.
Match report supplied by the Press Association.
- 2SmithSubstituted forAndersonat 28'minutes
- 6BaldwinSubstituted forInmanat 68'minutes
- 18Da Silva LopesBooked at 85mins
- 10TaylorBooked at 65mins
- 21NicholsSubstituted forMoriasat 68'minutes
- 23LedsonBooked at 87mins
- 19HallSubstituted forSercombeat 80'minutes
- 11McAlenyBooked at 45minsSubstituted forRothwellat 78'minutes
- 15HemmingsSubstituted forMartínezat 83'minutes
- Mark Heywood
- Shots on Target
Second Half ends, Peterborough United 1, Oxford United 2.
Foul by Paul Taylor (Peterborough United).
Joe Rothwell (Oxford United) wins a free kick on the right wing.
Goal! Peterborough United 1, Oxford United 2. Craig Mackail-Smith (Peterborough United) right footed shot from a difficult angle and long range on the left to the bottom right corner. Assisted by Bradden Inman.
Attempt saved. Craig Mackail-Smith (Peterborough United) right footed shot from the centre of the box is saved in the centre of the goal.
Corner, Peterborough United. Conceded by Marvin Johnson.
Ryan Ledson (Oxford United) is shown the yellow card for a bad foul.
Foul by Ryan Ledson (Oxford United).
Chris Forrester (Peterborough United) wins a free kick in the attacking half.
Attempt saved. Joe Rothwell (Oxford United) right footed shot from outside the box is saved in the centre of the goal.
Second yellow card to Leonardo Da Silva Lopes (Peterborough United) for a bad foul.
Foul by Leonardo Da Silva Lopes (Peterborough United).
Chris Maguire (Oxford United) wins a free kick on the left wing.
Substitution, Oxford United. Antonio Martínez replaces Kane Hemmings.
Substitution, Oxford United. Liam Sercombe replaces Robert Hall.
Attempt missed. Andrew Hughes (Peterborough United) left footed shot from the centre of the box is close, but misses to the left following a corner.
Corner, Peterborough United. Conceded by Simon Eastwood.
Attempt saved. Paul Taylor (Peterborough United) right footed shot from outside the box is saved in the bottom left corner.
Substitution, Oxford United. Joe Rothwell replaces Conor McAleny.