Birmingham moved above Portsmouth in the Premiership after hammering their relegation rivals at St Andrews.
Matthew Upson celebrates scoring the third goal for Birmingham
The Blues went ahead early on when Mario Melchiot crossed for Jiri Jarosik to head home and Jermaine Pennant's drilled finish doubled the advantage.
Matthew Upson made the game safe shortly after the break when he powered home a header from Pennant's corner.
Substitute Mikael Forssell struck a late penalty and David Dunn ran through to rub salt into Pompey's wounds.
The win was everything Birmingham deserved for a spirited and committed effort - the very opposite of their south coast opponents.
Yet it was Portsmouth who first threatened, as Maik Taylor raced from his line to prevent Benjani Mwaruwari getting a shot in.
If the crowd at St Andrews were becoming fraught due to the magnitude of the game, Jarosik soon calmed their collective nerves.
Pennant played a lovely ball down the right to Melchiot and his high cross dropped just over Jamie Ashdown and on to Jarosik's head for the Czech midfielder to confidently nod home.
From then on, Birmingham began to dictate the play and Pompey spent much of their time chasing shadows as they struggled to stamp their authority.
Ashdown pulled off a wonder save with his left hand to stop Chris Sutton scoring, while in a rare counter attack, Portsmouth's Matthew Taylor sent a left-foot volley wide from 30 yards.
But the visitors could not live with Pennant's sudden bursts of pace and intelligent link-up play and he got a deserved goal before the break.
Emile Heskey flicked on a Kenny Cunningham pass and Pennant took the ball into the box and drilled low past Ashdown, a fine finish as he was falling over at the time.
Things quickly got worse for Pompey after the break too, despite the quick introduction of Emmanuel Olisadebe for Vincent Pericard.
An inswinging Pennant corner from the right was met firmly and unmarked by Upson, who powered his header past Ashdown and into the net.
Mwaruwari tried to provide for Pompey but his was a lost cause, the Zimbabwean lashing a couple of efforts wide and being thwarted by another fine Maik Taylor save.
Heskey got a standing ovation for his performance and Forssell only had to wait 11 minutes for a goal, bagging a penalty after Noe Pamarot brought him down.
Fellow sub Dunn made it even worse for the visitors when he ran through unchallenged to slot in after a clever Sutton pass.
Birmingham manager Steve Bruce:
"There is no magic formula. We are playing better than a few weeks ago and that has coincided with the return of our better players.
"Mikael Forssell is running around for the first time in 15 months without pain and with our financial situation I wouldn't be able to go and buy a striker of his quality.
"We are in better shape than we've ever been and I'm convinced that we can turn things around."
Portsmouth boss Harry Redknapp:
"I know we can still get out of it but it's gonna be difficult.
"I knew what the situation was when I came in and it's not changed. We are going to have to start scrapping to get results and there's lots of work to do.
"The squad is desperately short and we need strengthening in many positions. We're bitterly disappointed."
Birmingham: Maik Taylor, Melchiot, Cunningham (Kilkenny 81), Upson, Lazaridis, Pennant, Izzet, Johnson, Jarosik (Dunn 74), Heskey (Forssell 78), Sutton.
Subs Not Used: Vaesen, Gray.
Goals: Jarosik 5, Pennant 37, Upson 55, Forssell 90 pen, Dunn 90.
Portsmouth: Ashdown, Pamarot (Karadas 90), Stefanovic (Priske 83), O'Brien, Griffin, O'Neil, Davis, Pedro Mendes, Taylor, Pericard (Olisadebe 53), Mwaruwari.
Subs Not Used: Westerveld, Hughes.
Ref: C Foy (Merseyside).