It was no less than the much-improved hosts deserved although they were hugely wasteful in the final third, with Wade Elliott and Nikola Zigic particularly profligate while Robins keeper Dean Gerken was impressive.
Chris Burke, who found the net 14 times last season, was recalled to Lee Clark's starting XI and finally grabbed the all-important breakthrough - his second of the current campaign - with a well-taken finish in the 59th minute.
Marlon King latched on to Zigic's header to double Birmingham's advantage with his eighth goal this term, securing only a second win in seven games, before Gerken capped a fine individual display when he saved Peter Lovenkrands' penalty in injury time.
It will be a more than welcome three points for the Midlands outfit, who had only managed five goals in seven home games before kick-off and enjoyed a total of 20 shots at goal tonight.
For lowly Bristol City it is sixth successive league defeat for the first time in seven years and their search for a first clean sheet of the campaign goes on.
The game's first clear opportunity arrived in the 40th minute but Gerken was equal to Marlon King's effort, before Bristol City enjoyed a solid chance of their own but Jack Butland was quick to deny Sam Baldock.
There was still time for Elliott to blaze over the bar from 12 yards.
The second half started in exactly the same way the first finished, Elliott firing high off target before Zigic followed suit.
Substitute Neil Kilkenny came close to prodding home before Ravel Morrison's 25-yard shot was saved by Gerken.
The opener finally arrived just before the hour mark and deservedly went Birmingham's way. Burke received the ball on the right before skipping past two players and unleashing an effort high past Gerken.
Zigic headed a great chance off target from close range but played a part in Blues' second soon after, knocking the ball into the path of King who converted into the bottom corner.
Gerken produced a great save to deny sub Lovenkrands from the spot amid eight minutes of injury time after Burke had been brought down, but the Robins remain winless against Birmingham since 1993.