Birmingham clinched their first win at St Andrew's in five attempts as they inflicted a sixth successive defeat on Bristol City.
Chris Burke was recalled to Lee Clark's line-up and opened the scoring with a well-taken finish in the 59th minute.
Marlon King latched on to Nikola Zigic's header to double the hosts' lead with his eighth goal this season.
Dean Gerken capped a fine individual display for Bristol City when he saved Peter Lovenkrands' late penalty.
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 but enjoyed a total of 20 shots at goal tonight and are now 18th in the table.
Blues manager Clark will have been happy to see his side so positive from the start as Wade Elliott and King both tested visiting goalkeeper Gerken.
Elliott spurned another good chance in the second half as he fired over the bar before Zigic done the same.
However, on the hour the breakthrough came as Burke received the ball on the right before skipping past two players and unleashing an effort high past Gerken.
King doubled the lead to make sure of the points but Gerken prevented Lovenkrands from adding a third by saving the forward's penalty after Burke had been brought down in the box.
Birmingham manager Lee Clark:
"We kept plugging and got what we deserved. If we had won four or five Bristol City could not have had any complaints.
"My wide men probably had more chances and shots on goal than they have had in all the previous games combined because we were positive and played off the threat of our strikers.
"We took risks which we are allowed to do playing at home. This is the only way we are going to be progressive."
Bristol City manager Derek McInnes:
"This is now six defeats in a row.
"It is embarrassing. I am embarrassed. The players should be embarrassed and it is now a crucial game against Charlton on Sunday.
"The game ran away with us with the injuries at the end. We cannot hide behind the fact that the better team won on the night."
Full Time The referee blows for the end of the match.
The ball is sent over by David Murphy, clearance made by Liam Fontaine.
Peter Lovenkrands is caught offside. Dean Gerken takes the indirect free kick.
Outswinging corner taken by Christopher Burke from the right by-line.
Corner taken by Wade Elliott, Dean Gerken makes a save.
90:00 +2:42 Penalty
Penalty taken by Peter Lovenkrands saved by Dean Gerken. Birmingham 2-0 Bristol City.
Foul by Martyn Woolford on Christopher Burke, Penalty awarded.
Martyn Woolford fouled by Hayden Mullins, the ref awards a free kick. Martyn Woolford takes the free kick. Albert Adomah sends in a cross, Sam Baldock takes a shot.
Ravel Morrison takes a shot. Save made by Dean Gerken.
Centre by Christopher Burke.
The ball is swung over by Christopher Burke, clearance by Matthew Briggs.
Long range shot from Martyn Woolford misses to the left of the goal.
Corner taken by Albert Adomah from the right by-line, Paul Robinson manages to make a clearance.
Corner from the right by-line taken by Albert Adomah, clearance made by Jonathan Spector.
Dean Gerken restarts play with the free kick.
Substitution Marlon King goes off and Peter Lovenkrands comes on.
Free kick awarded for an unfair challenge on Stephen McManus by Nikola Zigic.
Richard Foster takes a shot. Save made by Jack Butland.
Christopher Burke takes a shot. Blocked by Stephen McManus.
Hayden Mullins concedes a free kick for a foul on Martyn Woolford. Stephen Pearson delivers the ball from the free kick left-footed from left channel, save by Jack Butland.
The assistant referee flags for offside against Albert Adomah. Jack Butland restarts play with the free kick.
Assist on the goal came from Nikola Zigic.
72:39 Goal scored
Goal! - Marlon King - Birmingham 2 - 0 Bristol C Marlon King fires in a goal from deep inside the penalty box to the bottom right corner of the goal. Birmingham 2-0 Bristol City.
Substitution Ryan Taylor replaces Marvin Elliott.
Booking Booking for Paul Robinson for unsporting behaviour.
Free kick awarded for an unfair challenge on Marlon King by Liam Fontaine. Free kick crossed left-footed by Wade Elliott from left wing, save by Dean Gerken.
Marlon King produces a cross, Header from close range by Nikola Zigic clears the bar.
Albert Adomah is flagged offside by the assistant referee. Jack Butland takes the indirect free kick.
The ball is crossed by Martyn Woolford, David Murphy gets a block in. Inswinging corner taken right-footed by Albert Adomah played to the near post, clearance made by Steven Caldwell.
The ball is delivered by Matthew Briggs, Steven Caldwell manages to make a clearance. Inswinging corner taken right-footed by Albert Adomah from the left by-line, Jonathan Spector makes a clearance.
The referee blows for offside against Marlon King. Matthew Briggs takes the indirect free kick.
Substitution (Bristol City) makes a substitution, with Martyn Woolford coming on for Jon Stead.
Assist on the goal came from Ravel Morrison.
58:31 Goal scored
Goal! - Christopher Burke - Birmingham 1 - 0 Bristol C Christopher Burke scores a goal from inside the penalty area high into the middle of the goal. Birmingham 1-0 Bristol City.
Unfair challenge on Steven Caldwell by Jon Stead results in a free kick. Free kick taken by Paul Robinson.
Christopher Burke takes a shot. Save by Dean Gerken.
Stephen Pearson takes a shot from just outside the penalty area clears the crossbar.
Effort on goal by Wade Elliott from just inside the area clears the bar.
The assistant referee signals for offside against Jon Stead. Hayden Mullins takes the free kick.
Ravel Morrison takes a shot. Save made by Dean Gerken.
Substitution Neil Kilkenny joins the action as a substitute, replacing Cole Skuse.
Shot by Nikola Zigic from outside the box goes over the net.
Wade Elliott produces a left-footed shot from close in that clears the bar.
The match restarts for the second half.
45:00 +2:05 Half time
Half Time The ref blows to signal half-time.
Paul Robinson fouled by Sam Baldock, the ref awards a free kick. Paul Robinson takes the direct free kick.
Wade Elliott produces a right-footed shot from inside the area that clears the crossbar.
A cross is delivered by Christopher Burke, save made by Dean Gerken.
Substitution Jonathan Spector comes on in place of Curtis Davies.
Foul by Curtis Davies on Stephen Pearson, free kick awarded. Cole Skuse crosses the ball from the free kick right-footed from left channel, save made by Jack Butland.
Marlon King takes a shot. Save by Dean Gerken.
Corner taken right-footed by Albert Adomah from the left by-line to the near post, Close range header by Sam Baldock goes over the bar.
Short corner taken by Cole Skuse from the right by-line, The ball is sent over by Richard Foster, Hayden Mullins manages to make a clearance.
A cross is delivered by Cole Skuse, David Murphy gets a block in. Outswinging corner taken right-footed by Cole Skuse from the right by-line, Liam Fontaine takes a shot. Save by Jack Butland.
The referee gives a free kick against Marlon King for handball. Free kick taken by Dean Gerken.
Free kick awarded for an unfair challenge on Richard Foster by Nikola Zigic. Free kick taken by Liam Fontaine.
Hayden Mullins takes a shot. Save by Dean Gerken.
Ravel Morrison takes a shot. Blocked by Cole Skuse.
Ravel Morrison sends in a cross, Stephen McManus makes a clearance.
The referee blows for offside. Dean Gerken takes the free kick.
Albert Adomah takes a shot. Jack Butland makes a comfortable save.
Stephen Pearson gives away a free kick for an unfair challenge on Wade Elliott. David Murphy takes the free kick.
Centre by Jon Stead, clearance made by Curtis Davies. Inswinging corner taken by Stephen Pearson from the right by-line, Paul Robinson makes a clearance.
Christopher Burke takes a shot. Liam Fontaine makes a clearance.
Foul by Ravel Morrison on Sam Baldock, free kick awarded. Free kick taken by Cole Skuse.
Effort from deep inside the area by Wade Elliott misses to the left of the target.
Marlon King is flagged offside by the assistant referee. Dean Gerken takes the free kick.
Centre by Christopher Burke, Liam Fontaine makes a clearance. Hayden Mullins has an effort at goal from outside the box which goes wide left of the goal.
Marvin Elliott concedes a free kick for a foul on Marlon King. Paul Robinson produces a cross, Nikola Zigic takes a shot. Save made by Dean Gerken.
The ball is swung over by David Murphy, Marlon King takes a shot. Dean Gerken makes a comfortable save.
Wade Elliott takes a shot. Save by Dean Gerken. Outswinging corner taken from the right by-line by Christopher Burke. The ball is sent over by Christopher Burke, clearance made by Marvin Elliott.
Sam Baldock takes a shot. Hayden Mullins gets a block in. Short corner worked by Albert Adomah, Matthew Briggs produces a cross, Nikola Zigic manages to make a clearance. Effort from 35 yards by Cole Skuse went wide of the right-hand post.
Unfair challenge on Christopher Burke by Matthew Briggs results in a free kick. Free kick crossed by Paul Robinson, save made by Dean Gerken.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.