Bristol City went ahead in the 21st minute through Stephen Pearson’s superb strike and, in a first half of few chances, surged into a two-goal lead thanks to Jon Stead’s effort.
Birmingham, who took most of the first half to settle, pulled a goal back thanks to Marlon King’s deflected effort just before half-time and levelled on the hour mark courtesy of Nikola Zigic.
The home side pushed hard for a winner in the last third of the game, but in the end Chris Hughton’s men had to make do with a point.
Zigic and Andros Townsend returned to the Birmingham starting line-up in place of Guirane N’Daw and Wade Elliott, while Colin Doyle began in goal for the Blues after regular keeper Boaz Myhill was injured in the warm-up.
Bristol City manager Derek McInnes made three changes to the side that beat Coventry 3-1 last time out.
Chris Wood came into the Robins’ XI up front, with Brett Pitman suspended, while Louis Carey replaced Ryan McGivern in defence and Martyn Woolford and Kalifa Cisse were handed starts in midfield.
After a slow opening to the match, Birmingham came close to edging in front in the 12th minute.
Chris Burke played in Zigic, but the striker was denied by Dean Gerken in the visitors’ goal before Liam Fontaine cleared the danger.
Townsend fired wide for the Blues six minutes later, as the play-off chasing hosts looked to dominate the early proceedings, but it was the away side who clawed in front after 21 minutes.
At the end of the flurry of passes, Woolford played in Pearson and the midfielder produced a fine left-footed finish to beat Doyle.
Birmingham tried to rally, with Townsend ballooning an effort over the bar from 30 yards, but they soon found themselves two goals behind.
Cisse found Stead, and the frontman manoeuvred himself into space before striking the ball across Doyle and into the left-hand corner.
Birmingham gave themselves a lifeline just before the break.
Jordon Mutch found King and, from a tight angle, the striker’s shot deflected off Carey and ricocheted into the back of the net.
After the interval, Stead fired wide from Woolford’s corner and Gerken saved from King at the other end as chances came at a premium for both sides.
Woolford drew a decent stop from Doyle after getting on the end of Ricky Foster’s cross just before the hour but City were pegged back level three minutes later.
Burke delivered a perfectly weighted cross and Zigic was in the right place at the right time to nudge home.
Birmingham pushed hard for a late winner, with David Murphy nodding Mutch’s corner over the crossbar from close range, but their guests soaked up long spells of pressure to secure a valuable point.