Emanuel Villa's last-gasp header earned Derby a point they barely deserved and put Birmingham in the relegation zone.
Garry O'Connor (right) was a constant threat down the wing
Sebastian Larsson had seemingly won the match when he fired in from six yards after good work by David Murphy.
But Villa converted Derby's one genuine clear-cut chance, heading Dean Leacock's cross past Maik Taylor.
The result, which was harsh on a Birmingham side that created numerous chances, extends their winless run to seven matches, Derby's standing at 22.
However, Alex McLeish's side will only have themselves to blame having dominated possession throughout.
Their first sniff of the Derby goal came inside 20 seconds, Fabrice Muamba inches away from converting Garry O'Connor's low right wing cross.
Setting the pattern for the whole match, the home side made all the early chances but Olivier Kapo, the main beneficiary, left plenty to be desired with his finishing.
A free-kick was deflected wide, a header from O'Connor's cross directed over and a third effort at the end of a run past half-hearted Robbie Savage and Leacock challenges easily saved.
James McFadden then had a chance of his own, but headed over from five yards after more great wing play by O'Connor.
For all the home side's half-chances, the biggest cheer of the half came when Savage blasted high and wide from 20 yards.
The chorus of boos greeting the former Birmingham midfielder's every touch changed temporarily to ironic applause.
No doubt sent out with a few choice words from manager Paul Jewell, Derby showed renewed purpose after the break and came within inches of taking the lead on 52 minutes.
Kenny Miller showed great composure in the box to pick his spot, but his low shot came back off the inside of the post with Taylor well beaten.
Normal service was resumed moments later when Birmingham broke down the right wing, but again the finish was lacking as Muamba fluffed his kick from eight yards with just keeper Roy Carroll to beat.
Jewell sent on Villa and Giles Barnes for the ineffective Lauren Robert and Robert Earnshaw on the hour, but the pattern remained unchanged.
McFadden wasted another chance, his poor touch allowing Carroll, making his debut after signing from Rangers, to make a save, before Larsson finally gave the home side the lead.
Debutant Murphy won the ball with a strong challenge, then exchanged passes with Kapo before firing a deep cross that Larsson converted from 10 yards after his initial header had deflected back to him off Marc Edworthy.
With Derby having offered precious little, Birmingham might have thought that one goal would be good enough.
But with just a minute remaining, substitute Villa rose the highest to send Birmingham spiralling into the relegation zone.
Birmingham boss Alex McLeish:
"I watched Derby in midweek against Manchester City but they did not reach the heights they did in that game.
"This is a match that we totally dominated but they fought back from a goal down and got a point.
"We worked hard to get our noses in front but it was not enough for the win. We were a bit wasteful with the chances we had in front of goal."
Derby manager Paul Jewell:
"It wasn't a great performance but at least we showed some character to come from a goal behind.
"Emanuel (Villa) is one of those players who, if you put quality balls into the box, will score goals. It was a terrific header for the goal.
"He has just come here from Mexico so it will take him time to settle down, especially for a team at the bottom of the league but I am confident Emanuel will score a few goals."
Birmingham: Maik Taylor, Kelly, Martin Taylor, Ridgewell, Murphy, Larsson (Zarate 76), Johnson, Muamba, Kapo, O'Connor, McFadden.
Subs Not Used: Doyle, Forssell, Jerome, Parnaby.
Goals: Larsson 68.
Derby: Carroll, Leacock, Moore (Todd 67), Stubbs, Edworthy, Fagan, Ghaly, Savage, Robert (Barnes 60), Earnshaw (Villa 61), Miller.
Subs Not Used: Price, Teale.
Booked: Robert, Edworthy, Leacock, Miller, Savage.
Goals: Villa 89.
Ref: Peter Walton (Northamptonshire).
BBC Sport Player Rater man of the match: Derby's Emanuel Villa 8.30 (on 90 minutes). Please note that you can still give the players marks out of 10 on BBC Sport's Player Rater after the match has finished.