City moved back up to second in Sky Bet League Two table with a 2-0 victory at home to high-flying Exeter City.
Two first-half goals saw Gary Bowyer's side return to winning ways, having recorded their first clean sheet since September.
The Bantams were inches away from taking an early lead when skipper James Vaughan rattled the post after being found by Harry Pritchard.
Bowyer’s men grew further into the opening period and took the lead just after the half-hour mark.
Adam Henley worked space on the right before fashioning a cross which was bundled home at the far post by Remi Oteh.
The hosts doubled their advantage on the stroke of half-time, with Vaughan netting in his second-consecutive match.
After Oteh was played through and appeared to be brought down, the City skipper snuck in to poke the ball through Jonny Maxted’s legs.
The hosts responded after the interval and went close to pulling a goal back through Sweeney and Craig Woodman - with the latter striking the post.
The visitors were then reduced to 10 men on the hour mark after captain Jake Taylor lunged in late on Connor Wood.
But the Bantams had a man of their own dismissed after Callum Cooke was shown a second yellow card, two minutes later.
The Grecians then found themselves another man down when defender Tom Parkes was given his marching orders for bringing down returning substitute Dylan Connolly - when in on goal.
City saw out the dying embers to ensure they moved back into the automatic promotion places.
CITY: Richard O’Donnell; Adam Henley, Anthony O’Connor, Ben Richards-Everton, Connor Wood; Callum Cooke (booked 21’, dismissed 62'), Hope Akpan (Jermaine Anderson 87'), Harry Pritchard (Daniel Devine 73'); Zeli Ismail (Dylan Connolly 77', booked 90+4'), James Vaughan (c), Aramide Oteh. Subs (not used): George Sykes-Kenworthy (GK), Paudie O’Connor, Kelvin Mellor, Omari Patrick.
GOALS: Oteh (31’), Vaughan (45+1).
EXETER: Jonny Maxted; Pierce Sweeney, Aaron Martin, Tom Parkes (dismissed 82'), Randell Williams, Jake Taylor ((c) dismissed 60'), Archie Collins, Craig Woodman (Jayden Richardson 84'); Nicky Law; Lee Martin (Ben Seymour 70'), Ryan Bowman. Subs (not used): Dino Visser (GK), Nigel Atangana, Matt Jay, Alex Fisher, Dean Moxey.
ATTENDANCE: 14,002 (371 visitors).
REFEREE: Michael Salisbury.