Attendance: 19,346 (577 visitors)
The Bantams made it three wins on the trot in Sky Bet League One after a battling display helped to secure a hard-fought victory over Oxford United at the Northern Commercials Stadium.
On his first start in over a month following a knee injury, Nicky Law was the man on hand to net the all-important winner from close range on the hour mark.
The win further strengthens City's position in the top six as the campaign now moves towards its final three games of the regular league season.
A talented Oxford side made City really work for their victory though - the fourth in succession for Stuart McCall's men at home.
Colin Doyle, who was solid and dependable throughout, twice make smart saves from the impressive Conor McAleny after the break.
With City looking to take the sting out of the match following Law's opener, defender Curtis Nelson and midfielder Joe Rothwell also went close for the visitors.
As Oxford probed for a way back in the match, however, Charlie Wyke and Mark Marshall could have put the seal on the win in the second period for the Bantams.
Wyke, who had earlier seen a header from a corner pushed away by Simon Eastwood in the Oxford goal, had an outrageous effort on the half-volley from distance tipped over by Eastwood.
Marshall then fired inches wide with a low angled drive from just inside the box later in the half.
A relatively low-key first period was probably edged by Oxford, with McAleny threatening on a couple of occasions, although City arguably went the closest in the half when Eastwood pushed out a Rory McArdle header from a corner.
This victory for City keeps them fourth in the league, meaning the Bantams also remain behind third-placed Fleetwood Town on goals scored alone.
FT: Bradford City 1 Oxford United 0
90+4min: YELLOW CARD - Raglan is booked for a foul on Darby over by City's right flank.
90min: There will be five minutes of time added on at the end of the match.
90min: SUB - The Bantams bring on Billy Clarke for Marshall.
85min: SUB - Oxford bring on Phil Edwards for Ribeiro.
84min: SUB - The Bantams bring on Stephen Darby for Hiwula.
81min: SUB - Oxford bring on Rob Hall for Maguire.
80min: Johnson goes for goal from outside the area but the effort sails over.
79min: Marshall's cross into the box is towards Wyke. The striker can't quite connect with a header, however, due to the presence of a couple of Oxford defenders, leading to the ball eventually bouncing out to Cullen. The midfielder is in the box himself but he can only fire over with a rushed effort on his left foot.
77min: McAleny goes for goal with a curling effort from just outside the box and Doyle has to move across to his left to push the shot away via a decent one-handed save.
75min: SUB - Oxford bring on Kane Hemmings for Rothwell.
74min: The ball drops to McAleny just inside the box and the attacker's low drive is tipped behind via a smart save from Doyle.
74min: So close from Marshall! The winger is picked out over on City's right wing via a superb cross-field pass from Dieng. Marshall turns in-field onto his left foot moves into the box before firing in a low angled drive that whistles inches past Eastwood's far post!
73min: SUB - The Bantams bring on Timothee Dieng for Law.
67min: Outrageous from Wyke! The striker brings the ball down after winning possession following a goal kick forward from Doyle. From roughly twenty five yards out, Wyke turns and shoots for goal in an instant and Eastwood has to step back and tip over the stunning half-volley!
66min: McAleny tries his luck from distance following a short Oxford free-kick but the shot sails a goal distance over.
64min: Rothwell moves away from a couple of City challenges before firing over with a strike from outside the box.
63min: Maguire's corner delivery eventually works its way through to Nelson over by the far post but the defender smashes over with a rising drive from roughly eight yards out.
62min: Johnson flicks on from a big kick forward from Oxford to help Rothwell in with a sight of goal. The midfielder looks to run clear on goal but McMahon does just enough to get back and deflect the ball behind for a corner.
60min: GOAL!!!!!!!!!!!!!! Bradford City 1 Oxford United 0 - The Bantams take the lead! From Marshall's cross, Wyke heads down into the mix and Nicky Law is on hand to stab home from just a couple of yards out.
59min: Vincelot goes for goal with a rather ambitious effort from distance and the effort on the half-volley loops over Eastwood's bar.
58min: Rothwell drives towards City's penalty area before firing in a low drive from roughly twenty yards that Doyle gathers up first time on the bounce.
57min: Wyke stoops to head for goal from McMahon's corner delivery and Eastwood is just about able to shovel the ball away.
55min: Romain Vincelot sends a looping header over the bar from McMahon's free-kick into the box.
54min: YELLOW CARD - Skarz is booked for a strong challenge on Marshall over by City's right wing.
54min: The blow for Maguire appears to be around his neck/chest area but the attacker is up on his feet again and play continues.
52min: We have a break in play as Maguire receives treatment as taking a blow just inside City territory.
48min: As Oxford break forward on the counter-attack, Rothwell looks to play Ruffels into space inside City's penalty area. Rothwell's pass takes a touch off Cullen on its way through to Ruffels but the midfielder's touch is heavy and Doyle and a nearby McArdle are able to watch the ball roll out for a goal-kick.
46min: Oxford restart the match.
HT: Bradford City 0 Oxford United 0
45min: There will be one minute of time added on at the end of the first half.
45min: Maguire twists and turns before playing McAleny into space inside the box. The Everton loanee fires for goal from an angle but his rising drive flashes wide of Doyle's near post.
43min: Eastwood has to take a looping back-pass on the bounce, allowing Hiwula the opportunity to try and sneak in. The ball is at an awkward height for the Oxford shot-stopper deep inside his box but he is able to kick clear ahead of a lurking City striker.
40min: McAleny curls a shot wide following Skarz's low cross into the box.
40min: After being played into space down Oxford's right flank, Johnson's cuts inside to fire for goal on his favoured left foot. The shot is deflects up and McMahon does just enough to force Nelson to prod wide with the loose ball as it drops dangerously into the heart of City's penalty area.
38min: Ruffels is allowed to drive forward with the ball before the midfielder fires in a low drive from roughly twenty yards out that Doyle is able to watch bounce wide of his goal.
38min: Raglan glances a header comfortably wide of the far post from Maguire's resulting corner into the box.
37min: Joe Skarz's curling ball in behind looks to be bouncing out for a goal-kick but Marvin Johnson uses his pace to keep it in play and Doyle has to push behind after the Oxford attacker had looked to hook across the box.
33min: Hiwula turns away from John Lundstram and looks to get a free run clear towards Oxford's penalty area. Christian Ribeiro gets across, however, to muscle his way into possession of the ball and clear the danger.
33min: Maguire's curling free-kick into the box from a distance out is a testing one but no Oxford player able to get a touch and the ball bounces through to Doyle.
29min: Wyke's superb turn from Josh Cullen's pass to feet sees the striker move away Raglan and into space inside Oxford territory. Wyke plays the ball out to the unmarked Hiwula but the striker's shot for goal is blocked by Curtis Nelson.
17min: McMahon's low corner delivery towards the near post is hooked wide by Jordy Hiwula.
16min: McArdle's downward header from McMahon's far post corner delivery is pushed behind by Oxford shot-stopper Simon Eastwood.
8min: Mark Marshall bursts forward into clear space down City's left flank. Upon reaching the byline, the winger looks to cut the ball back to a waiting Charlie Wyke in the middle but Charlie Raglan is in the right place to block and clear.
6min: Tony McMahon's threatening corner delivery flashes across Oxford's six yard box, narrowly missing Rory McArdle by the far post, before bouncing out for a throw-in over by the far side.
5min: Colin Doyle holds on first time following Chris Maguire's free-kick for goal roughly twenty-five yards out.
0min: The Bantams kick off the match. They will attack towards the T L Dallas Stand end in the first period.
BRADFORD CITY LINE UP:
Doyle, McMahon, McArdle, Knight-Percival, Meredith, Vincelot, Cullen, Law, Marshall, Wyke, Hiwula
Subs: Sattelmaier, Darby, Toner, Dieng, Clarke, Jones, Devine
Bradford City substitutions:
Dieng for Law (73), Darby for Hiwula (84), Clarke for Marshall (90)
OXFORD UNITED LINE UP:
Eastwood, Ribeiro, Nelson, Raglan, Skarz, Ruffels, Rothwell, Lundstram, Johnson, McAleny, Maguire
Subs: Stevens, Hemmings, Edwards, Hall, Long, Dunkley, Carroll
Oxford United substitutions:
Hemmings for Rothwell (75), Hall for Maguire (81), Edwards for Ribeiro (85)
Oxford United cautions:
Skarz (54), Raglan (90+4)
Referee: R Clark
Assistant Referee: B Gordon
Assistant Referee: B Khatib
Fourth Official: R Atkin