JAMIE Mackie came off the bench to score a dramatic injury-time winner as Oxford United beat Bradford City to move out of the relegation zone.

For the most part, it was a Sky Bet League One fixture bereft of any quality in blustery conditions.

But the game burst into life in injury time and ended in controversial fashion.

Bradford looked certain to steal the points, but Lewis O’Brien missed a sitter from five yards out.

And United went up the other end and Mackie hammered home a dramatic and deserved winner from the right edge of the six-yard box.

But just when the hosts were celebrating, controversy ensued as Bradford felt they should have had a corner following O'Brien's miss and argued United's goal-kick had been illegally taken.

However, after much discussion with his assistants, nothing was given in the visitors' favour and United’s goal stood to the relief of the home side.

Karl Robinson’s first big decision of the day saw Ahmed Kashi keep his place in midfield, leaving captain John Mousinho, fully fit following a calf problem, on the bench.

The U’s boss opted for a change of system, with Jerome Sinclair replacing Jamie Mackie to lead the line in a 4-2-3-1 formation, while Jordan Graham came in for Marcus Browne on the left.

Henry, United’s third captain of the week, was pushed further forward in a No 10 role.

Storm Hannah pounded the Kassam Stadium before kick-off and the wind continued to swirl after 3pm.

Clearly the message to United had been to shoot on sight as they looked to use the conditions to their advantage.

Goalkeeper Richard O’Donnell could only beat away a Cameron Brannagan effort from 25 yards on five minutes and Sinclair was first to pounce on the loose ball but fired into the side-netting.

United had certainly started the brighter and Henry led a seventh-minute counter, only to shoot high and wide when slipping in Gavin Whyte looked the better option.

The hosts were looking to exploit Bradford’s 4-2-2-2 formation, spreading the ball wide at every opportunity, but their end product continued to let them down, with Graham ending one swift move by crossing into the grateful arms of O’Donnell.

United continued to look the better team and a miscued shot from Kashi created the next opportunity on 29 minutes.

It found Graham in space to the left of the area, but his shot was well blocked by Paul Caddis before Nathaniel Knight-Percival threw himself in the way of a Sinclair effort.

United continued to create shooting opportunities, but Kashi’s tame curling effort was comfortably dealt with by O’Donnell, before Whyte blazed over and Henry ended a swift move by steering wide from 18 yards.

The hosts won their first corner on the brink of half-time but, after Brannagan eventually took the set-piece due to the wind blowing the ball off its spot, the linesman raised his flag for offside.

It rather summed up an opening 45 minutes riddled with a lack of cutting edge in the penalty area – a familiar tale this season.

United were still on top at the start of the second half and Paul Caddis made a vital interception ahead of Graham from Whyte’s dangerous cross.

They were made to rue their best chance yet on 54 minutes with the same players involved.

Graham whipped in a dangerous ball from the left and Adam Chicksen scuffed his clearance straight to Whyte who pulled the trigger first time, but blazed over from 15 yards.

United needed to take one of these chances soon and Graham curled another opportunity over the bar after Whyte had sliced his way through the Bradford defence.

The former was substituted just after the hour, replaced by Browne, as the hosts looked to find a way to break the deadlock.

And O’Donnell was forced into a fine save on 63 minutes, getting down low to his left to beat away a Henry free-kick from the edge of the area.

United continued to search for a way through, knowing one moment of quality would prove the difference.

Knight-Percival got a vital touch as Josh Ruffels looked certain to get on the end of Whyte cross, before the latter fired another two attempts wide.

The hosts were becoming increasingly frustrated and with ten minutes to go neither side looked like scoring, with U’s goalkeeper Simon Eastwood yet to be tested.

Sinclair’s blushes were spared by the offside flag on 87 minutes as he completely missed the ball from two yards out after O’Donnell saved Brannagan’s low effort.

The midfielder then let fly again from distance and the keeper tipped his effort over the bar, but referee Andy Davies awarded a goal-kick to United’s disgust.

A frantic and desperate last couple of minutes ensued and Bradford looked like they were going to steal the victory when Doyle found O’Brien at the back post, but the substitute missed from five yards while under pressure from Brannagan.

The drama did not stop there as United went up the other end and a blocked shot fell for Mackie who blasted home to send the home supporters into raptures.

The chaos did not stop there as confusion broke out when Bradford appealed to referee Davies.

But after four minutes of waiting, United’s goal stood and Bradford were left furious.

Oxford Utd (4-2-3-1): Eastwood, Long, Nelson, Dickie, Ruffels, Kashi, Brannagan, Whyte, Henry (Mackie 71), Graham (Browne 63), Sinclair.

Unused subs: Stevens, Hanson, Garbutt, Mousinho, Sykes.

Booked: Mackie, Kashi.

Bradford City (4-2-2-2): O'Donnell, Caddis, O'Connor, Knight-Percival, Chicksen, Anderson, Akpan, Butterfield (Payne 78), Clarke (O’Brien 78), Doyle, Ball (Miller 56).

Unused subs: Wilson, Patrick, Staunton, Wright.

Booked: Ball, Akpan.

Referee: Andy Davies (Hampshire).

Attendance: 6,681 (654 visitors).