Sunderland boss Steve Bruce did not enjoy his first return to St Andrew's two years after his acrimonious departure.
Birmingham got themselves in front when defender Liam Ridgewell turned home Sebastian Larsson's 37th-minute free-kick, and doubled their advantage with James McFadden's fine finish three minutes after the restart.
But the home fans among a crowd of 21,723 endured a nail-biting finish after defender Scott Dann put through his own goal, with substitute Fraizer Campbell and Darren Bent passing up late opportunities to snatch a point for the visitors.
Bruce said: "We didn't really come to the party until the last half hour, that was the disappointing thing. In the last half hour we injected a bit of pace into the game and showed a bit of energy for it, but it was too late.
"In my opinion, you can't play in the Premier League and have six, seven or eight, in the first hour in particular, not at the races or playing poorly or whatever you want to say.
"In the Premier League, you can't get away with it. We nearly did with a couple of wonderful chances, but that's not going to gloss over the first hour where we hit nowhere near the heights.
Basically, we were poor, it has to be said."