Andy Cole's superb second-half strike gave Manchester City an impressive away victory at St Andrews.
Nicky Butt put Birmingham ahead with a powerful first-time finish after some good work from Julian Gray on the left.
But Joey Barton equalised, slotting into an empty net after Maik Taylor had blocked Darius Vassell's close-range shot following a neat build-up.
And Cole grabbed the winner, his first competitive goal for City, drilling home Trevor Sinclair's cross.
The victory extends Manchester City's splendid form under Stuart Pearce, making it 10 games unbeaten since they lost his first game in charge against Tottenham.
It also ended Birmingham's long undefeated run at St Andrews - which had stretched back to 22 January.
Steve Bruce's side had chances of their own, but an inability to take them cost them dear.
Both teams produced some enterprising forward play in the early stages, mixing committment with creativity.
Walter Pandiani's snap-shot brought an smart save out of David James, while Andy Cole headed Danny Mills' driven cross against the bar.
And it was no surprise when the first goal arrived on seven minutes - Butt marking his home debut with his first goal in a Birmingham shirt.
The on-loan midfielder reacted quickly when Gray's cross broke to him inside the area and although James reached his shot, he could not keep it out.
It should have been 2-0 soon after when Mikael Forssell's clever turn confused Richard Dunne, but while Jermaine Pennant had time and space from the Finn's pull-back he could only curl the ball wide.
Pearce's side were not short of ideas themselves however, and were level on 21 minutes.
Cole's pass put Vassell clear and although Taylor came out to save at his feet, the ball broke loose to Barton who coolly tapped home from close range.
The visitors grew in confidence as the game went on, with Barton making his presence felt in midfield,and the pace of Vassell a constant threat.
But it was his veteran strike partner who found the target next, with a vintage finish at the start of the second half.
Sinclair advanced down the right and from his deep cross Cole allowed the ball to bounce before smashing his shot into the bottom corner.
That silenced the home crowd and the Blues struggled to find a response until the last 20 minutes.
With City sitting back, Pandiani made space for a shot but could not find the target, while James did well to block when Gray was clean through.
The England keeper put his midweek international nightmare in Denmark behind him, dealing with everything Birmingham could throw at him and ensuring his side took all three points.
Birmingham boss Steve Bruce:
"We had a glorious start but we didn't defend well enough. Vassell and Cole caused us all sorts of problems and we didn't deal with that.
"We had some good chances but if we had defended better we'd have done better.
"It's difficult in this league - if you don't take chances and don't do the basics, other teams have players who punish you. We must learn quickly."
Man City boss Stuart Pearce:
"As a team it's been a tough week for one or two of us. The keeper David James has been under scrutiny and once again showed his character.
"The two up front worked tirelessly for the team. We're organised, hard to beat and I've got some good characters.
"They want to work hard for each other and the more games we go unbeaten the stronger we will get."
Birmingham: Maik Taylor, Melchiot, Cunningham, Upson, Clapham (Lazaridis 77), Pennant, Butt (Izzet 65), Clemence, Gray, Pandiani, Forssell.
Subs Not Used: Kilkenny, Vaesen, Tebily.
Booked: Butt, Clemence, Pandiani.
Goals: Butt 7.
Man City: James, Mills, Dunne, Jordan, Thatcher, Sinclair, Barton, Reyna (Jihai 72), Musampa, Cole (Sibierski 87), Vassell (Wright-Phillips 90).
Subs Not Used: Onuoha, De Vlieger.
Goals: Barton 20, Cole 47.
Ref: M Clattenburg (Co Durham).