AN astonishing finish from Kemar Roofe proved the difference as Oxford United edged a bad-tempered televised game at Bristol Rovers which saw both sides finish with ten men.

Roofe bent the ball in off the crossbar from 20 yards just after the hour mark with the one moment of real quality in the entire contest.

It came just after Liam Sercombe had been dismissed for a second booking, levelling up the game after Ollie Clarke's elbow on Danny Rose after 16 minutes.

United worryingly lost Roofe to an injury and had to defend doggedly to hold on to their lead.

Goalkeeper Sam Slocombe came up with three good saves as they clung on to a victory which extended the unbeaten run to 14 league games and sent the side fourth in the Sky Bet League Two table.

Michael Appleton made two changes to the XI which beat Yeovil Town 2-0, both enforced.

A rolled ankle ruled out Johnny Mullins, promoting Chey Dunkley for his first league start of the season.

Ryan Taylor also came into the XI to replace Callum O'Dowda, away on international duty with Ireland Under 21s.

Both United's new men had tense moments as Rovers made a bright start.

Dunkley survived a penalty shout in the second minute, when Matty Taylor hit the deck, while Ryan Taylor required treatment for a head injury defending a Rovers corner.

But the home side's momentum was halted in the 16th minute, when Ollie Clarke received a straight red card for an elbow on Rose.

Despite replays suggesting otherwise, the majority of a large crowd at the Memorial Stadium felt hard done by and appealed passionately for every decision from then on.

It took time for United to threaten with the extra man.

Roofe had the ball in the net on 28 minutes, but referee James Linington had already blown for a foul by Ryan Taylor.

Most of United's best moments came down the right, where Roofe, switched out wide in O'Dowda's absence, and George Baldock combined well.

Twice in quick succession they created chances for Ryan Taylor, who headed the first wide and was smothered at the next opportunity.

Arguably the clearest opening of a tight half fell to Sercombe just before the break, but he shot off target under pressure after Roofe's lay-off.

The interval did little to cool the febrile atmosphere and Ryan Taylor was substituted for his own protection just after he was booked for an aerial challenge.

The home fans did not have long to wait for a red card, though.

Sercombe, booked just before the break, felled Matty Taylor on the edge of the box and collected his second yellow.

United appeared to have squandered their advantage, but within three minutes they broke the deadlock in style.

Hoban, on for Ryan Taylor, cushioned a pass from Joe Skarz into space 20 yards out, which Roofe astonishingly bent into the net first-time via the crossbar.

It was virtually his final contribution, as an awkward fall forced him off with a shoulder injury.

Just over half an hour remained, during which Rovers pushed hard for an equaliser.

Slocombe, who had not previously been tested, was well positioned to keep out Jermaine Easter's volley and a free header from Tom Parkes.

The best save of the lot came late on, when he turned a well-struck free-kick from Chris Lines round the post.

Hoban also survived a penalty shout in six minutes of stoppage time, as United dug deep to hold on for a hard-earned victory.

Bristol Rov (3-5-2): Chapman, J Clarke (Bodin 84), Lockyer, Parkes, Sinclair, Lines, Mansell (Montano 74), O Clarke, Brown, Easter, Taylor (Harrison 67).

Unused subs: Mildenhall, Lyttle, Greenslade, Monakana.

Booked: None.

Sent off: O Clarke.

Oxford Utd (4-4-2): Slocombe, Baldock, Dunkley, Wright, Skarz, MacDonald, Sercombe, Rose, Roofe, Hylton, Taylor.

Subs used: Hoban (Taylor 56), Lundstram (Roofe 76), Ruffels (Hylton 88).

Unused subs: Buchel, Lundstram, George, Hawtin, Roberts.

Booked: Dunkley, Sercombe, Hylton, Taylor.

Sent off: Sercombe.

Referee: James Linington (Isle of Wight).

Attendance: 7,038 (633 visitors).