The Bantams fell to their first away defeat in eight matches as table-toppers Leyton Orient ran out 3-0 victors at Brisbane Road.
Two goals in quick succession and a late strike from Ruel Sotirou saw City leave East London empty-handed, after starting the game the brighter of the two sides.
Andy Cook won the ball back inside the O’s box and found Scott Banks early on, who saw his cut-back for Cook lifted over as the visitors looked to wrestle an early initiative.
The O's grew into the encounter and, after Jordan Brown’s long-range effort forced a strong save from Harry Lewis, the hosts took the lead shortly after.
Theo Archibald fed Charlie Kelman who kept his composure to round Lewis and convert, handing his side the advantage.
City fought for a quick response. Skipper Richie Smallwood's free-kick to the far post found Cook, but his stretched boot could only angle a shot narrowly wide.
Richie Wellens’ side doubled their advantage just after the half-hour mark, to put the O's into the driving seat heading into half-time.
Archibald fed a short corner to Tom James on the edge of the area and the Orient full-back picked out the top-left corner to strengthen his side's advantage.
The league leaders began the second period the brighter, as goal-scorer James saw his free-kick tipped on to the crossbar by Lewis, moments before Archibald’s low, driven strike was stopped by the legs of City’s No.1.
The Bantams' second-half substitutes provided increased momentum going forward as City searched for a way back into the encounter.
Lee Angol’s header from a Tyreik Wright cross looped over Lawrence Vigouroux’s net, while Abo Eisa’s darting run into the Orient area ended with Brad Halliday nodding into the Chilean stopper’s gloves.
The O’s grabbed their third goal to secure victory five minutes from time, as a James cross was drilled into second-half substitute Sotirou, who converted from close-range.
ORIENT: Lawrence Vigouroux, Tom James, Dan Happe, Paul Smyth (Ruel Sotiriou 81’), Theo Archibald, Jordan Brown, George Moncur (Craig Clay 75’), Idris El Mizouni, Darren Pratley (C), Omar Beckles, Charlie Kelman (Aaron Drinan 71’). Subs not used: Sam Sargeant (GK), Shad Ogie, Jayden Wareham, Jayden Sweeney.
GOALS: Kelman (24’), James (32’), Sotiriou (85').
CITY: Harry Lewis, Brad Halliday, Matty Platt (booked 51’), Richie Smallwood (C), Andy Cook (Lee Angol 65’), Alex Gilliead, Scott Banks (Abo Eisa 65’), Matty Foulds, Timi Odusina, Harry Chapman (Jamie Walker 65’), Tyreik Wright. Subs not used: Colin Doyle (GK), Yann Songo’o, Ryan East, Vadaine Oliver.
ATTENDANCE: 8,761 (1,244 City supporters).