Frank Fielding was the hero as his second-half penalty save secured City a point at Bolton Wanderers.
The visitors created the better chances but the hosts wasted the best of the lot when Shola Ameobi’s spot-kick was repelled by the City stopper six minutes into the second half.
Steve Cotterill named an unchanged matchday squad following the 1-0 victory over Wolves in midweek, with Kieran Agard keeping his place alongside Jonathan Kodjia up front.
Bolton have been draw specialists at the Macron Stadium this season, playing out a stalemate in five of their seven home matches.
But it was City who took the initiative from the off. A cleverly worked short corner routine found Luke Freeman in the box seemingly blocked off by Jay Spearing, who escaped unpunished.
The visitors were dictating the early possession and seeing plenty of openings, with Elliott Bennett finding a couple of decent crossing opportunities inside the first ten minutes.
But Darren Pratley’s slide-rule pass, which only failed to find Liam Feeney after clipping the back of the striker’s heel when a clean run on goal lay in wait, was a warning sign that Bolton were bound to have their moments.
Agard showed his willingness to run at the hosts when he took on David Wheater and tried his luck with a low shot from the edge of the box that just rolled a couple of yards wide via the fingertips of goalkeeper Ben Amos.
But Agard would soon unsettle them again and was nearly celebrating a freak opener after 16 minutes.
Defender Prince-Desire Gouano looked uncertain under a long ball as Agard chased him down. Amos, sensing his team-mate’s indecision, raced from his line before Gouano’s attempted clearance looped up off Agard and left Amos in no man’s land only to drop on to the crossbar and back into play.
City were unquestionably on top but tested Amos only once in the opening half an hour, while Feeney found space at the other end and tried pulling the ball back to the onrushing Pratley with strike partner Ameobi well placed to his right, before Freeman snuffed out the danger.
The second half would begin in a similar vein as City continued to carry the greater threat. Kodjia caught Wheater napping to steal the ball on the byeline, only for his cutback to elude the waiting Agard with Bolton exposed.
Roles were reversed in similarly frustrating fashion a minute later, as Agard charged down the left but Kodjia just could not stretch far enough to connect with his teasing centre.
Wanderers had offered next to nothing as an attacking force but were gifted a golden chance to edge in front six minutes into the second period.
It seemed innocuous enough, but Nathan Baker’s alleged barge into the back of half-time substitute Gary Madine was deemed worthy of a spot-kick – helped by some theatrics from the striker.
It was the sort of challenge you tend to see penalised on the halfway line a whole lot more than inside the box.
But up stepped Ameobi to take a tame penalty parried away by Fielding, who dived low to his right to make the save before Madine fired the rebound into orbit.
And so the normal pattern of play resumed. City pressed and pressed, forcing no shortage of set-pieces, but Amos was still not quite busy enough.
Then suddenly a move broke down on the edge of the Bolton box and the hosts counter-attacked through Ameobi, who held off Aden Flint and Luke Ayling before spotting Feeney in space, whose curling effort towards the top corner was only kept at bay by a flying Fielding save.
A previously edgy home team saw light at the end of the tunnel. Twice they attacked down the right, twice they crossed, twice Madine nodded wide.
It was tense stuff but strangely absorbing. Cotterill introduced Joe Bryan for Derrick Williams and the Bristolian was immediately involved in finding Bennett, who nudged the ball down the line for Kodjia.
Meanwhille, Bryan was sprinting towards the far post, but the Frenchman opted to go alone, drifting inside and scuffing just wide on his left foot with Amos scrambling.
When the ball did eventually find the net 11 minutes from time, as Pratley’s intended shot was turned in by Ameobi, the big striker was flagged offside and City breathed a collective sigh of relief.
The closest the visitors came to a late winner came courtesy of Marlon Pack’s low free kick that took a slight deflection but not enough to carry the ball beyond the grateful grasp of Amos, before Ameobi headed straight at Fielding deep into stoppage time.