Late heartbreak condemned the Bantams to their first defeat in three matches, as they fell 1-0 to Colchester United.
A last-gasp winner from defender Tom Eastman was enough to seal all three points for the U's at the JobServe Community Stadium.
City, at times, looked the stronger side as Scott Banks went close with numerous efforts and the introduction of Kian Harratt and Andy Cook in the second half offered the Bantams hope of winning the game.
It was the hosts who started on the strong foot. Positive work down the left-hand side through Al-Amin Kazeem and Frank Nouble found Alex Newby in the box, but his mis-hit shot was cleared by Matty Platt.
Banks had City’s first chance of the encounter when Alex Gilliead, who was allowed plenty of time on the ball, found Harry Chapman who let the Scotsman free, but his curled left-footed effort flew wide of the target.
It was City’s No.12 who had the Bantams' second chance of the game. The 20-year-old picked up the ball and drove at the Colchester backline, but his effort fell into the gloves of former City stopper Sam Hornby.
Mark Hughes’ side could not convert their pressure into a goal, as the Essex outfit pushed in hunt for an opener. Luke Hannant directed a powerful shot towards Harry Lewis’ net but it was blocked by Liam Ridehalgh.
Colchester, who slowly grew into the game, continued to ask questions of the City defence, as Frank Nouble was next to put Lewis’ net in danger, just after 30 minutes. A cross was lofted in the path of the former West Ham striker, forcing City’s ‘keeper to lift onto the bar.
City’s time on the ball, which displayed bright and patient play from Hughes’ side, could not result in getting on the scoresheet as the Bantams were held going in to the break.
The visitors sped up their tenacity in the second period as Lee Angol, who came on for Jake Young, threaded the ball into Harry Chapman but his shot was blocked.
The second half, however, ended up being parallel to the first, in terms of neither side taking full control of the game. Alex Newby reacted quickest to a cutback and struck a side-footed effort towards goal, but Lewis acrobatically denied the former Rochdale midfielder the first goal.
City went close again just before the 70-minute mark. Matty Platt’s header was caught by Hornby, following a short corner.
Harratt and Cook instantly had an impact on the game when introduced with 15 minutes remaining. Harratt’s pace instilled panic into the U’s backline and his dangerous-looking effort was well kept out by the U’s stopper.
Cries of a penalty were ignored by the referee, as Lee Angol went to ground following decent link-up play with Cook, before chaos ensued in the final few minutes.
Colchester took all three points in the eighth minute of stoppage time, as Tom Eastman headed home from Noah Chilvers free-kick at the back post to break City hearts.
There was still time for City to think they may steal back a point, as they came forward from the restart.
Cook curled a shot onto the post and the follow-up from Kian Harratt, which looked destined to save the Bantams, was cruelly deflected onto the crossbar, ensuring City left with nothing.
CITY: Harry Lewis, Brad Halliday (booked 78’), Liam Ridehalgh, Matty Platt (booked 44’), Richie Smallwood (C), Alex Gilliead, Scott Banks, Vadaine Oliver (Andy Cook 79’ booked 90+2’), Harry Chapman (Kian Harratt 79’), Jake Young (Lee Angol 45’ booked 74’), Romoney Crichlow. SUBS (not used): Colin Doyle, Yann Songo’o, Matty Foulds, Ryan East.
COLCHESTER: Sam Hornby, Luke Chambers (C), Luke Hannant (John Akinde 88’), Freddie Sears, Noah Chilvers, Tom Eastman, Alex Newby, Cameron Coxe, Al-Amin Kazeem, Marley Marshall Miranda, Frank Nouble (Ryan Clampin 72’). Subs (not used): Ted Collins, Tom Dallison, Ossama Ashley, Junior Tchamadeu, Samson Tovide
GOALS: Eastman (90+6’).