Garry O'Connor's deflected header gave Birmingham a point after they had fallen behind to a disputed penalty.
O'Connor celebrates after equalising for Birmingham
Emmanuel Adebayor opened the scoring from the spot after Stephen Kelly was judged to have fouled Eduardo da Silva when he seemed to have taken the ball.
Eduardo also headed wide and straight at Maik Taylor from five yards, while William Gallas had a header saved.
After the break O'Connor's header from a corner went in off Cesc Fabregas to earn the gritty Blues a priceless draw.
The draw left Arsenal in second place on goal difference, level on 51 points with new leaders Manchester United, who beat Newcastle United 6-0 in Saturday's late game.
Arsenal looked like they would easily collect three points from the match after they came flying out of the blocks.
In-form Eduardo had a chance to put the Gunners ahead inside two minutes but got too little contact on Gael Clichy's cross from the left.
Moments later Gallas wasted a free header as he nodded the ball directly at Taylor.
Then Rafael Schmitz let the ball run to Adebayor, who looked set to close in on goal but the Birmingham defender redeemed himself by racing back and making a superb tackle.
It was all Arsenal at this stage and Alexander Hleb, whose passing and creativity was exceptional, was at the heart of everything.
However, Arsenal almost found themselves a goal down as Cameron Jerome raced clear and struck an excellent low drive from the edge of the box, forcing a brilliant save from Manuel Almunia.
The hosts quickly responded and Eduardo should have scored but he headed straight at Taylor from point-blank range.
Three minutes later Eduardo won a penalty after he was brought down by Kelly, who appeared to win the ball.
After referee Phil Dowd waved away Birmingham's protests, Adebayor stepped up to the spot and stroked the ball into the bottom right corner.
For the remainder of the half, Arsenal continued to play with verve and flair - although Theo Walcott was not on the same wavelength as his team-mates - but they could not add to their advantage.
And two minutes after half-time, Arsenal were made to pay when O'Connor rose highest to meet Sebastian Larsson's corner and his header deflected in off Fabregas.
Arsenal immediately hit back and Adebayor unleashed a fierce drive that looked to be on target before Liam Ridgewell diverted it.
Then from a Fabregas free-kick, Senderos saw a thumping header well gathered by Taylor at the foot of his post.
As Arsenal pressed, Eduardo almost found substitute Nicklas Bendtner in the box and later the Dane shot wide after being played in by Fabregas.
Taylor got down well to smother a Matthieu Flamini shot from the edge of the box as Birmingham continued to thwart the Gunners.
And in the dying moments, with Birmingham hanging on, Gallas was inches away from converting Hleb's fizzing, low cross while Fabregas's shot at the death rose just too high.
Arsenal manager Arsene Wenger:
"It was very frustrating. We were punished for losing concentration on the set-piece.
"We thought it was going to be too easy, but we didn't create enough. We were not sharp enough and they defended well. It is as simple as that.
"We lost two points we should not have lost. The focus was not good enough. The players are very disappointed."
Birmingham boss Alex McLeish:
"We were playing against a special team and the determination of the players got us through.
"Arsenal can go through you like a hot knife through butter - but we had to concentrate for 90 minutes.
"We broke them up a few times and defended very well. They sniffed the danger and snuffed out the dangers most of the time."
Arsenal: Almunia, Sagna (Diaby 83), Senderos, Gallas, Clichy, Walcott (Bendtner 65), Fabregas, Flamini, Hleb, Eduardo, Adebayor.
Subs Not Used: Lehmann, Silva, Justin Hoyte.
Goals: Adebayor 21 pen.
Birmingham: Maik Taylor, Kelly, Ridgewell, Schmitz, Queudrue (Parnaby 61), Larsson, Muamba, Johnson, Kapo, O'Connor (Forssell 75), Jerome (McSheffrey 75).
Subs Not Used: Doyle, Martin Taylor.
Booked: Kapo, Ridgewell.
Goals: O'Connor 48.
Ref: Phil Dowd (Staffordshire).
BBC Sport Player Rater man of the match: Arsenal's Eduardo 7.76 (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.