Rotherham United slipped to a second consecutive defeat after a late strike by James&nbsp;Hanson&nbsp;gave Bradford a 2-1 victory, just after Adam Le Fondre had levelled with an injury time penalty.
In a closely contested Yorkshire derby, Michael Flynn had given the Bantams the lead but Le Fondre looked to have saved a point after a late penalty. Bradford then went straight up the other end and after a Bullock corner, Hanson headed in the winner.
Ronnie Moore made just one change form the midweek defeat at Rochdale with Pablo Mills replacing the injured skipper Ian Sharps at centre half.
The Millers started well, pressing the visitors back into their own half and were unfortunate not to take the lead on seven minutes. Kevin Ellison's deep cross to the back post found Nicky Law, who drove his shot goalwards but Matt Glennon pushed the ball away at his near post.
On nine minutes the visitors threatened when a dangerous cross by Simon Ramsden almost caught out Andy Warrington at his near post, but Mark Lynch was on hand to clear in the nick of time.
This gave the visitors confidence and they soon looked dangerous again when Steve Williams looped a header onto the roof of the net from 12 yards out.
On 14 minutes it was Bradford who again looked likely to score. It was obvious when the teams lined-up that there was a height advantage in favour of City, and they looked to exploit it when Bullock's corner was headed back by Williams, but Hanson volleyed over from 12 yards under pressure from the Millers defence.
Despite City's good start it was Millers who missed the best chance of the game so far. A corner by Law found the head of Nick Fenton whose header was cleared off the line, the rebound looped to Gavin Gunning but his header cannoned off the bar.
Glennon had a rush of blood on 38 minutes when he came hurtling out of his area following a long punt by Fenton, luckily for the Bantams 'keeper his defence helped him out after he missed the ball completely, with Adam Le Fondre lurking for the Millers.
Rotherham United 0 v 0 Bradford City
After a cagey opening to the second half Bantams' midfielder Flynn tried his luck from fully 30 yards but Warrington always had it covered, allowing the ball to drift wide.
City took the lead just after the hour mark. Adam Bolder broke clear down right, shrugging off the challenge of Gunning, before crossing perfectly into the path of Flynn who slid the ball beyond Warrington.
The Millers struggled to impose themselves after the goal, creating very few scoring opportunities. Ellison came closest in the 74th minute when he latched onto a knockdown just inside the area, but when stretching for the ball he couldn't get any power into the shot and the ball trickled wide.
That spurred the Millers into life with sub Marcus Marshall having a trio of headers in quick succession. First from a Josh Walker corner Marshall powered in a header which was scrambled off the line, the re-bound fell to Marshall again and his second header was smuggled clear to Walker who drilled in another cross, this time Marshall headed over from eight yards out.
With nine minutes remaining the Millers had Warrington to thank for keeping them in the game. O'Brien went on a marauding run down the right taking on Lynch before shooting across Warrington only for the 'keeper to get a hand on the ball to save low down.
The Millers missed a glorious chance to equalise in the 87th minute. Walker found Marshall on the right; the on loan winger took on his man and pulled the ball back to Danny Harrison who blazed over from 10 yards.
Just when it seemed like the Millers were heading for defeat, a header into area by Ellison struck the arm of&nbsp;Flynn and the referee gave a penalty. Le Fondre stepped up to coolly convert past Glennon to equalise.
Then with the last kick of the game Bullock drilled in a corner which was headed in at the back post by Hanson, to send the away supporters into raptures.
Rotherham United 1 v 2 Bradford City
Rotherham: Warrington; Lynch, Mills, Fenton, Gunning (Green 70), Law (Marshall 65), Harrison, Walker, Ellison, Pope (Taylor 80), Le Fondre.
Subs not used: Annerson, Joseph, Roberts, Cummins.
Bradford: Glennon; Ramsden, Clarke, Williams, O'Brien, Flynn, Bolder, Bullock, Threlfall, Hanson, Evans.
Subs not used: McLaughlin, Bateson, Daley, O'Leary, Boulding, McCammon, Oliver.
Att: 4185 (1023)
The Millers Match report is brought to you in association with The Rotherham NHS Foundation Trust