Jacques Maghoma netted the game’s only goal in the 83rd minute to settle matters in favour of the rock-bottom Blues, who have the worst scoring record in the EFL.
It was a well-merited success for the struggling hosts, who dominated for long spells before Maghoma fired in the winner to give Birmingham only their third win in 14 games - and first in eight matches - under manager Steve Cotterill.
For a long period it appeared Blues would be frustrated by some sterling defensive work by their visitors.
It was a cagey affair in the early stages, with both sides struggling to create clear-cut chances. Birmingham, to their credit, were the more adventurous, with Maghoma - recalled to the side in place of Jota - posing problems with his speedy left-wing raids.
Leeds had to show a lot of determination to keep the eager hosts at bay as Blues made one of their most positive starts for several matches.
Craig Gardner was tireless in midfield with some accurate long passes which put Leeds under pressure.
Slowly Leeds worked their way back following Birmingham’s early onslaught and Kalvin Phillips was the first player to get a shot on target in the 20th minute, forcing David Stockdale into a hasty save.
Birmingham seemed a little too anxious to atone for their recent poor form, and their attacks were regularly foiled by Liam Cooper and Pontus Jansson.
Leeds’ lightweight side often came off second best against the more aggressive Birmingham players who were striving for the elusive goal to boost their flagging fortunes.
Home goalkeeper Stockdale had his quietest game of the season but made the save of the match when he pushed a Pablo Hernandez effort onto the top of the bar in the 74th minute as Leeds briefly threatened to chalk up their fifth straight win at St Andrew’s.
In a frantic finish David Davis went close with a cross-shot which set up Birmingham for one final push for victory.
Substitute Jota fired in a shot which Leeds goalkeeper Felix Wiedwald was unable to hold, and the unmarked Maghoma was on hand to score the winner by lashing his shot into the roof of the net.
Leeds boss Thomas Christiansen said: “From my point of view it was a horrible game. There were not many opportunities, with each goalkeeper making one good save.
“It was a difficult game as we were aware what the opponents would do, with Sam Gallagher their target man.
“The changes I made were logical in view of the danger that we thought Gallagher could create. I thought we needed more intensity.”
“It was disappointing not to take three points. When it was goalless I thought it wouldn’t be a bad result in the situation that existed.
“But I am very happy with the performances the team have produced in December, when we collected 16 points from a possible 21.
“It has been a very good month but against Birmingham it was not our day. We were aware that the opposition would be very dangerous, in view of where they are in the league.”
Birmingham City: Stockdale, Colin, Roberts, Dean, Grounds, Gardner, Kieftenbeld, Maghoma (Nsue 88), Davis (N’Doye 87), Boga (Jota 77), Gallagher. Subs Not Used: Jutkiewicz, Morrison, Trueman, Gleeson.
Leeds United: Wiedwald, Ayling, Jansson, Cooper, Berardi, Shaughnessy, Phillips (Klich 69), Cibicki (Samuel 55), Hernandez, Alioski (Lasogga 84), Roofe. Subs Not Used: Lonergan, Pennington, Anita, Grot.
Referee: Tim Robinson (West Sussex).