Crewe's Ryan Lowe struck a late winner to deny new caretaker manager David Wetherall a share of the points. Lowe's clinical finish from 12 yards two minutes from time was set up by Luke Varney, who had earlier wasted two gilt-edged chances to put Crewe ahead.
Varney saw an effort saved by Donovan Ricketts and missed the ball completely from Jon Ostemobor's cross.
Bradford should have taken the lead but Steven Schumacher failed to hit the target with a far-post shot.
Bradford: Ricketts, Edghill, Bower, Ainge, Parker, Daley (Bentham 64), Bridge-Wilkinson, Colbeck (Hibbert 90), Schumacher, Johnson (Dyer 83), Paynter.
Subs Not Used: Howarth, Clarke.
Booked: Colbeck.
Crewe: Williams, Otsemobor (Woodards 74), Jones, Baudet, Moss, Lowe, Cox, Roberts, Rix, Jack (Higdon 88), Varney.
Subs Not Used: Tomlinson, Pope, O'Donnell.
Booked: Jack.
Goals: Lowe 89.
Att: 7,778
Ref: D Drysdale (Lincolnshire).