Match ends, Birmingham City 1, Leeds United 3.
Chris Wood scored twice at former club Birmingham City as Leeds United won for the third time in four Championship games to move a point behind third-placed Huddersfield.
Wood's double, and a clinical late third from Alfonso Pedraza, meant a third home defeat in four for Blues.
After Wood's 14th-minute lob, Craig Gardner levelled on 63 minutes with a low, 25-yard left-foot curler.
But Wood scored from close range before Pedraza sealed the points.
Wood, who had a prolific half-season on loan at City from West Brom in 2011-12, has 25 goals this season in all competitions - with 22 in the league.
And his two goals at St Andrew's take him two ahead of Newcastle's Dwight Gayle at the top of the Championship charts.
Blues punished by clinical Leeds
Leeds boss Garry Monk, in the stands serving his one-game touchline ban, must have been pleased with his side's finishing, which was the difference against a Blues side who have won just twice in 16 games under Gianfranco Zola.
Birmingham made the much brighter start, David Davis firing into the side-netting from a tight angle and Rob Green diverting Che Adams' angled shot wide, but Blues were then cut open by a classic piece of long-ball football.
From defending a corner, keeper Rob Green found Luke Ayling, whose teasing long ball down the inside-right channel just evaded the despairing lunge of Ryan Shotton, leaving Wood in the clear to lift a superb instinctive lob over advancing Blues keeper Tomasz Kuszczak.
The hosts had chances to level, and Robert Tesche's stunning 25-yard left-foot shot swerved beyond Green but crashed back off the bar.
The luckless Adams then went close three times in as many minutes, with a header cleared off the line before he diverted Tesche's shot just over and was then denied at close range by Green.
Gardner finally brought Blues level, but the hosts were back on terms for only four minutes.
Kalvin Phillips squared from the right and young defender Josh Dacres-Cogley lost his footing on the wet, muddy surface in the six-yard box, allowing Wood to turn home from close range.
Then, on 82 minutes, Pedraza wrapped it up with a low left-foot shot into Kuszczak's bottom corner, to send the noisy army of Leeds fans home deliriously happy.
Birmingham City manager Gianfranco Zola told BBC Sport:
"The result does not reflect what happened on the pitch but, on the other side, there was a player who touched the ball three times and scored two.
"We made a few mistakes, but it is difficult to say anything to my team when they have put in a performance like that against a team who are fourth in the league. We are genuinely doing our best. I cannot complain.
"We have to put right the mistakes, but overall it was our best performance of the season. I need to encourage the players to keep playing like this."
Leeds United manager Garry Monk told BBC Sport:
"I didn't enjoy the first 60 minutes. Birmingham were excellent and it was tough for us.
"We were second best, especially in the first half. They will feel aggrieved that they did not capitalise on the chances they created.
"But we showed a strong mentality and, in that last half-hour, we were excellent. We scored some very good goals and in the end won comfortably.
"The subs made a good impact, Pedraza scored his first for the club and we had two great finishes from Chris Wood, especially the first - great improvisation."
- 26DavisBooked at 78mins
- 7TescheBooked at 90mins
- 6KieftenbeldSubstituted forJutkiewiczat 62'minutes
- 33KeitaSubstituted forFrei Koyunluat 82'minutes
- 14AdamsSubstituted forSinclairat 89'minutes
- 21Frei Koyunlu
- 14O'KaneSubstituted forPhillipsat 59'minutes
- 15DallasSubstituted forPedraza Sagat 73'minutes
- 19HernándezSubstituted forRoofeat 82'minutes
- 29Pedraza Sag
- Chris Kavanagh
- Shots on Target
Second Half ends, Birmingham City 1, Leeds United 3.
Jerome Sinclair (Birmingham City) wins a free kick on the right wing.
Foul by Kyle Bartley (Leeds United).
Robert Tesche (Birmingham City) is shown the yellow card for a bad foul.
Attempt saved. Chris Wood (Leeds United) right footed shot from the centre of the box is saved in the bottom right corner.
Nsue (Birmingham City) wins a free kick in the defensive half.
Foul by Liam Bridcutt (Leeds United).
Foul by Robert Tesche (Birmingham City).
Kemar Roofe (Leeds United) wins a free kick in the defensive half.
Substitution, Birmingham City. Jerome Sinclair replaces Che Adams.
Craig Gardner (Birmingham City) wins a free kick in the defensive half.
Foul by Kalvin Phillips (Leeds United).
Attempt missed. Che Adams (Birmingham City) right footed shot from outside the box is close, but misses to the right. Assisted by Lukas Jutkiewicz with a headed pass.
Craig Gardner (Birmingham City) wins a free kick in the attacking half.
Foul by Kalvin Phillips (Leeds United).
Substitution, Birmingham City. Kerim Frei replaces Cheick Keita.
Substitution, Leeds United. Kemar Roofe replaces Pablo Hernández.
Goal! Birmingham City 1, Leeds United 3. Alfonso (Leeds United) left footed shot from the left side of the box to the bottom right corner. Assisted by Pablo Hernández following a fast break.
Attempt saved. Pablo Hernández (Leeds United) right footed shot from the centre of the box is saved in the bottom left corner. Assisted by Luke Ayling.