Scott Sinclair ended Preston's winless streak to pile more home misery on Birmingham.
The former Aston Villa striker's eighth goal of the season earned Alex Neil's side a 1-0 win at St Andrew's.
It halted a run of three straight defeats in all competitions for Preston and they condemned goal-shy Birmingham to a sixth successive home loss.
Aitor Karanka's team are now winless in nine games at St Andrew's and have scored just once in their last six outings.
Brad Potts also hit a post early in the second half for Preston, who climbed to 10th in the Sky Bet Championship.
Neil's men were worthy winners and left Blues – who have won just three times in 15 league games – six points above the relegation zone.
Preston's best moment of a forgettable first half came when Alan Browne curled wide from the edge of the area.
When the hosts did threaten, goalkeeper Daniel Iversen, making his second appearance after joining on loan from Leicester, saved Ivan Sanchez's low drive.
Jeremie Bela also drove wide and Sanchez fired over for Birmingham but they were second best after the restart.
Preston emerged for the second half sharper and Potts should have scored after 50 minutes when he latched onto Emil Riis' pass, only for his strike to hit a post.
A minute later the midfielder forced Neil Etheridge into a fine low save when he wriggled free on the edge of the box.
Birmingham had struggled to contain their visitors since the break and it was no surprise when North End grabbed the winner after 61 minutes.
Brighton loanee Jayson Molumby's driving run ended when he slipped in Sinclair – who had a loan spell at St Andrew's from Chelsea in 2009 – to drill into the bottom corner for his first goal in six games.
Preston remained in control as Birmingham lacked the urgency and quality to level.
Ivan Sunjic lashed over with time running out and Jonathan Leko's low effort flew wide in stoppage time.
But Preston navigated the seven added minutes with minimum fuss to claim victory.