Mark Hughes’ Bantams extended their unbeaten run on the road, but were caught in a stalemate at the Poundland Bescot Stadium, drawing 0-0 with Walsall.
A fairly even encounter, where both sides had chances to edge in front, Andy Cook went closest in the first half with looping header which clipped the top of the crossbar.
City rallied late in search of a last-gasp winner, as Scott Banks watched his free-kick sail agonisingly over, but travel back to BD8 two points of the automatic-promotion spots in Sky Bet League Two.
After a slow start to the encounter - on a chilly evening in the West Midlands - City went nearest to breaking the deadlock, just before the half-hour mark.
Brad Halliday’s deep ball into the box was met by Cook in the air, as his looped header cannoned of the crossbar and away.
Responding to the Bantams’ increasing momentum, Conor Wilkinson tested Harry Lewis with a powerful effort - just outside City’s 18-yard-box - but the right-footed shot sailed wide.
Both sides set out to end the half strongly, in search of an opener.
Jamie Walker had two curled, left-footed efforts bend wide and then high over the bar, moments before Andy Williams and Issac Hutchinson had their respective strikes saved by Lewis, as the first half ended goalless.
Michael Flynn’s side started the second half the brighter, as Tom Knowles cut inside and sent a drilled shot through a barrage of Bantams defenders, but watched his effort bounce behind for a corner.
Making the most of the space on the right, Halliday’s teasing cross found Cook, and after bringing the ball down with a promising first touch, City's No.9 could only hook his effort over Owen Evans’ net.
The Saddlers pressed for a late winner as the game ticked into the final 10 minutes, as Knowles’ inviting cross evaded both Liam Gordon and Douglas James-Taylor.
The game ended with Hughes’ side looking the most likely. Ryan East went close with a first-time effort which bounced just past the home No.1, minutes before Banks’ free-kick dipped agonisingly over the bar.
The Saddlers saw out City’s late attempts, as the Bantams travel back to West Yorkshire with their unbeaten record away from home in 2023 intact.
WALSALL: Owen Evans, Hayden White, Liam Gordon, Donervon Daniels (C, booked 90’), Manny Monthė, Conor Wilkinson (Douglas James-Taylor 78’), Tom Knowles, Andy Williams, Brandon Comley, Jacob Maddox (Liam Kinsella 74’), Issac Hutchinson. Subs not used: Joe Riley, Oisin McEntee, Matty Stevens, Taylor Allen, Joe Low.
CITY: Harry Lewis, Brad Halliday (booked 69’), Liam Ridehalgh, Matty Platt, Richie Smallwood (booked 87’), Andy Cook, Jamie Walker, Alex Gilliead (Ryan East 75’), Dara Costelloe (Romoney Crichlow , Sam Stubbs (booked 61’), Adam Clayton (Scott Banks 75’). Subs not used: Colin Doyle, Tolaji Bola, Harry Chapman, Ciarán Kelly.
ATTENDANCE: 4,951 (740 City supporters).