Match ends, Oxford United 0, Bristol Rovers 1.
John-Joe O'Toole's penalty earned struggling Bristol Rovers a shock win over high-flying Oxford.
The U's were top of the table before the game, while Rovers were 21st and had failed to win in their last nine.
But it was the Pirates who took all three points thanks to O'Toole's second-half penalty, awarded after Jake Wright felled Eliot Richards.
Striker James Constable had two clear opportunities to score for the hosts, but both headers went wide.
Veteran Rovers keeper Steve Mildenhall also produced two good saved to deny Sean Rigg and Dave Kitson.
The result means Oxford slip to second in the table, while John Ward's side move up one place.
VIEW FROM THE DRESSING ROOM
Bristol Rovers manager John Ward told BBC Radio Bristol:
"I'm delighted and I am really pleased for the players and the supporters.
"We have actually played as well as that in one or two games we haven't won and we just stayed in there.
"There are fine margins in games. We've had some go against us and today we have had a victory with a good performance.
"I'm pleased for the supporters because they've followed us and stuck with us. I'm pleased with my young players to so it's a good day for Bristol Rovers which hasn't surprised me because I think it's been coming."
- 13HuntSubstituted forSmalleyat 78'minutes
- 6WrightBooked at 79mins
- 15WilliamsSubstituted forPotterat 60'minutesSubstituted forDaviesat 90'minutes
- 30LockyerBooked at 89mins
- 24O Clarke
- 33SantosSubstituted forHarrisonat 90+4'minutes
- 32O'TooleBooked at 90mins
- 19BeardsleySubstituted forBruntat 86'minutes
- 25ClucasBooked at 40mins
- Mark Brown
- Shots on Target
Second Half ends, Oxford United 0, Bristol Rovers 1.
Attempt saved. Danny Rose (Oxford United) with an attempt from the centre of the box is saved in the centre of the goal.
Substitution, Bristol Rovers. Ellis Harrison replaces Alefe Santos.
John-Joe O'Toole (Bristol Rovers) is shown the yellow card.
Dean Smalley (Oxford United) wins a free kick on the right wing.
Foul by John-Joe O'Toole (Bristol Rovers).
Foul by James Constable (Oxford United).
John-Joe O'Toole (Bristol Rovers) wins a free kick in the defensive half.
Attempt saved. Dave Kitson (Oxford United) right footed shot from the centre of the box is saved in the centre of the goal.
Substitution, Oxford United. Scott Davies replaces Alfie Potter.
Tom Lockyer (Bristol Rovers) is shown the yellow card.
Alfie Potter (Oxford United) wins a free kick in the defensive half.
Foul by Tom Lockyer (Bristol Rovers).
Substitution, Bristol Rovers. Ryan Brunt replaces Chris Beardsley.
Attempt missed. Alfie Potter (Oxford United) right footed shot from the right side of the box misses to the right.
Jake Wright (Oxford United) is shown the yellow card.
Foul by Jake Wright (Oxford United).
Seanan Clucas (Bristol Rovers) wins a free kick in the defensive half.
Substitution, Oxford United. Dean Smalley replaces David Hunt.