The Bantams battled back to ensure they went six games unbeaten - with a 1-1 draw at home to Bolton Wanderers.
Danny Rowe equalised in deep into second-half injury time to cancel out Nathan Delfouneso's opener at the Utilita Energy Stadium and ensure the spoils were shared.
The first real opportunity of the game fell to Andy Cook, who tried to test the Bolton backline midway through the first half.
He claimed the ball from on edge of the 18-yard area before turning inside and angling his shot over the crossbar.
After an end-to-end opening period, Sam Hornby was called into action in the 53rd minute as Dapo Afolayan had the ball laid off to him on the edge of the penalty area.
The City stopper got down well and managed to palm the shot around the post for a Trotters corner.
Ian Evatt’s side piled on the pressure as the match hit the hour mark. Blocks from Paudie O’Connor and Niall Canavan denied the visitors an opening - before the ball was floated over to former Bantam Eoin Doyle, who put his free header wide of the post from six yards out.
The Trotters took the lead in the 83rd minute as Eoin Doyle came inside City’s 18-yard area and unleashed a shot which was parried up into the air by Hornby, only for Nathan Delfouneso to turn home from close range.
As City threw bodies forward to salvage something from the match, Jordan Stevens whipped in a cross to Anthony O’Connor toward the back post.
The Bantams centre-back met the ball and headed down towards the bottom-left corner of the goal, but Matt Gilks pulled out a quick reaction save to deny the 28-year-old.
With the game in the closing stages, Mark Trueman and Conor Sellars’ side continued to push for an equaliser.
Rowe’s deflected free-kick from 25 yards allowed the Bantams one last chance to test the visitors' resilience from a corner.
Elliot Watt crossed in but it was cleared away by a Bolton defender, only for Levi Sutton to hook the ball back into the final third.
The delivery fell to Anthony O’Connor - who flicked the ball through to Rowe.
The City substitute drilled his first-time volley across goal and into the top-right corner - to rescue a point and extend the Bantams’ unbeaten run to six matches.
CITY: Sam Hornby; Connor Wood, Niall Canavan, Paudie O’Connor ©, Anthony O’Connor; Elliot Watt, Levi Sutton; Ollie Crankshaw (Jordan Stevens 82’), Callum Cooke (Danny Rowe 71’), Charles Vernam (Billy Clarke 71’); Andy Cook (Clayton Donaldson 82’). Subs (not used): Richard O’Donnell, Finn Cousin-Dawson, Kian Scales.
GOAL: Rowe (90+3’).
BOLTON: Matt Gilks; Alex Bapiste, Ricardo Almeida Santos, MJ Williams, Declan John; Lloyd Isgrove (Arthur Gnahoua 87’), Gethin Jones, Kieran Lee, Antoni Sarcevic ©; Eoin Doyle, Dapo Afolayan. Subs (not used): Marcus Maddison, Andrew Tutte, Shaun Miller, Harry Brockbank, Arthur Gnahoua, George Thomason.
GOALS: Delfouneso (83’).
REFEREE: Leigh Doughty.