City were denied an FA Cup upset by another stoppage-time goal as Premier League hosts West Bromwich Albion dug deep to rescue a replay.
The visitors found themselves on the back foot for parts of the first half but ironically fell behind after a good spell in the second period courtesy of West Brom substitute Saido Berahino.
But Jonathan Kodjia pounced to head home Luke Freeman’s free kick on 74 minutes before Kieran Agard came off the bench to score what looked like being the winner ten minutes later.
City, roared on by a bumper away following in excess of 5,000 fans, were on the brink of a place in round four only for James Morrison to strike deep into added time as three sides of The Hawthorns breathed a collective sigh of relief.
Steve Cotterill made one enforced change to his side, handing a first start since October to Mark Little following the transfer of former loanee Elliott Bennett from Norwich City to Blackburn Rovers.
City were not slow in getting on the front foot, as Little forced the game’s first corner inside 20 seconds.
But West Brom enjoyed a couple of early forays of their own in a frantic start to a cup tie that felt like a cup tie, with a huge travelling contingent packed into the Smethwick End behind Frank Fielding’s goal.
Stephane Sessegnon latched on to a loose pass in midfield and danced his way into the box before seeing a left-footed shot blocked by Aden Flint, while James McClean charged down the left but just failed to pick out Salomon Rondon.
City, free of the pressures of Sky Bet Championship survival, were playing with a swagger.
Korey Smith and Joe Bryan both tried their luck from distance, the latter testing returning England international Ben Foster down to his right, before Bryan beat James Chester and crossed towards Little, whose stooping header sparked handball appeals from a noisy away end.
It was a good game. Set-piece specialist Chris Brunt struck a tame free kick into the wall before McClean rifled the follow-up goalwards to force Fielding into the first meaningful save, diving to his left to push it to safety.
Then City allowed the ball to bounce in the box but pantomime villain Rickie Lambert could only hook an attempted cross into Fielding’s arms.
Jonathan Kodjia was the obvious counter-attacking threat for the visitors, as ever, but fluffed his lines when presented with a rare shooting opportunity on 20 minutes, dragging the chance well wide of the near post from 20 yards.
Meanwhile, Sessegnon was proving City’s biggest problem, finding too much space to run at Bryan and Nathan Baker and provide crosses for the physical front pairing of Rondon and Lambert.
Baker was breathing a sigh of relief shortly before the interval when he tried to play his way out of trouble down by the corner flag, allowing Sessegnon to nick the ball and turn away from the defender, teeing up James Morrison who scuffed his shot wide from 15 yards.
The start of the second half saw an unfamiliar face trot out as City’s last line of defence, as 19-year-old Max O’Leary replaced Fielding, who was suffering from a side strain.
O’Leary showed his bravery to tip away a teasing cross and calm his nerves, by which time Baker had already needed to be in the right place at the right time to clear McClean’s header to safety with the rookie keeper beaten.
Then Rondon was given a free route to goal as he raced on to a through ball only to fire wide from the best chance of the game to that point.
It was a narrow escape for the visitors, but one that sparked City’s best spell of the game.
An experienced Albion backline looked flustered when Foster was forced into a panicked clearance from an overhit backpass, before Kodjia latched on to Korey Smith’s pass that tempted Foster off his line, inviting the Frenchman to lift the ball over the keeper but into the sidenetting.
Little was fed by Freeman soon after but could only shoot against the legs of a defender, but former City boss Tony Pulis was suitably concerned to make a triple substitution, introducing Craig Dawson, Callum McManaman and Berahino on 63 minutes.
The extra smattering of top-flight talent would make the difference, as four minutes later the in-demand striker threaded a low shot through a crowd of bodies from 18 yards to break the deadlock.
But West Brom’s lead would prove short-lived, as Kodjia popped up to head home his tenth goal of the season with 16 minutes left.
It was City’s top scorer who carved out the opening too, as he carried the ball to the byeline and turned too sharply for Jonny Evans, who tripped him down by the corner of the box.
Cue a free kick in prime crossing position – a short corner, in hockey terms. Freeman stood over it and clipped a delightful ball towards the near post where Kodjia rose to head down past Foster to equalise from close range.
Now it was Cotterill’s turn to ring the changes. Aaron Wilbraham and Kodjia off, Wes Burns and Agard on.
An already bouncing away end was sent into pandemonium within a minute, with both replacements involved.
Former Manchester United defender Evans was again dragged out of his comfort zone as Burns showed him a clean pair of heels to breeze down the right and cross towards Agard, before the ball ran loose to Freeman.
The midfielder took his time getting the ball out of his feet before rifling a low shot that looked destined for the near corner but for a stunning Foster save, but Agard was already on his bike, chasing down the rebound to bundle the ball just inside the far post.
City were within touching distance as Foster charged forward for a series of late set-pieces, but from the last of those the equaliser arrived through Morrison, and both teams will have to do it all again.