Portsmouth came from a goal down to beat 10-man Birmingham City and move to within five points of safety.
Nikola Zigic gave promotion-chasing Blues an early lead, firing home after a one-two with Marlon King.
Chris McGuire restored parity, before the visitors had David Murphy sent off.
David Norris then turned and fired home to give Pompey the lead on the hour, Kelvin Etuhu making it 3-1 before Marco Futacs completed the scoring with his fifth of the season in the last minute.
Portsmouth were without a win in nine and, when Zigic netted his 10th of the campaign, things looked bleak.
But Pompey rallied and McGuire, on loan from Derby, brought a good save out of Boaz Myhill before scoring his first goal for the club, a drilled effort into the bottom corner.
Murphy was then sent off for a second bookable offence and, from the resulting free-kick, the home side took the lead.
Greg Halford floated the ball into the area and Norris controlled, turned and fired home.
Etuhu made sure of the points, with his first goal for the club, racing clear and slotting home from a tight angle.
Portsmouth, who were recently deducted 10 points for entering administration, completed the rout when Futacs finished from close range.
The win moves Michael Appleton's side just a point behind Doncaster and Coventry, while Birmingham remain in the top six on goal difference.
Portsmouth manager Michael Appleton said: "I said to the lads at half-time, 'What are you waiting for?'.
"We had to go out there and express ourselves as this is the last-chance saloon and to be fair they went out there in the second half and worked their socks off.
"I could see they were there for the taking."
Birmingham boss Chris Hughton added: "I have not been as angry with any other refereeing performance this season. I know how difficult their job is to do but the performance of the referee changed the course of the game.
"I went and saw him afterwards. We should have been given a free-kick in the run-up to their first goal and for their second there were five or six of my players claiming for a handball.
"Then the sending-off was for something so minimal.
"We have got to pick ourselves up and forget about this game and keep fighting for a play-off spot."
Live Text Commentary
Full Time The final whistle is blown by the referee.90:00 +5:16
The assistant referee signals for offside against Luke Varney. Free kick taken by Boaz Myhill.90:00 +3:38 Substitution
Substitution David Norris leaves the field to be replaced by Ashley Harris.90:00 +1:51
The assist for the goal came from Greg Halford.90:00 +1:51 Goal scored
Goal! - Marko Futacs - Portsmouth 4 - 1 Birmingham Marko Futacs finds the net with a goal from close in to the bottom right corner of the goal. Portsmouth 4-1 Birmingham.88:23 Substitution
Substitution Marko Futacs comes on in place of Chris Maguire.86:51 Substitution
Substitution Adam Rooney replaces Nikola Zigic.85:11
Marlon King is ruled offside. Tal Ben-Haim takes the free kick.84:18
The ball is delivered by Chris Burke.82:18
Corner taken by Chris Maguire from the right by-line.82:18 Substitution
Substitution (Birmingham) makes a substitution, with Pablo Ibanez coming on for Keith Fahey.81:19
Centre by Kelvin Etuhu, clearance by Steven Caldwell.81:14
Chris Maguire sends in a cross.78:53
Chris Burke produces a left-footed shot from just outside the area that goes wide left of the goal.78:24
Chris Maguire sends in a cross, clearance made by Steven Caldwell.76:56
The assist for the goal came from Chris Maguire.76:56 Goal scored
Goal! - Kelvin Etuhu - Portsmouth 3 - 1 Birmingham Kelvin Etuhu scores a goal from inside the penalty area to the top left corner of the goal. Portsmouth 3-1 Birmingham.76:17
The assistant referee signals for offside against Marlon King. Tal Ben-Haim takes the indirect free kick.75:57
The referee blows for offside against Chris Maguire. Indirect free kick taken by Boaz Myhill.75:29
The referee blows for offside. Boaz Myhill takes the free kick.
Inswinging corner taken by Chris Maguire, save made by Boaz Myhill.72:30 Substitution
Substitution Kelvin Etuhu replaces Scott Allan.72:22
Wade Elliott produces a cross, clearance by Jason Pearce.71:15
Marlon King takes a shot. Save by Jamie Ashdown.70:32
Andros Townsend gives away a free kick for an unfair challenge on Greg Halford. Jamie Ashdown takes the free kick.68:48
Unfair challenge on Marlon King by Jason Pearce results in a free kick. Shot comes in from Andros Townsend from the free kick, David Norris gets a block in.67:29
The ball is crossed by Chris Maguire.65:50
Chris Maguire challenges Keith Fahey unfairly and gives away a free kick. Indirect free kick taken by Boaz Myhill.64:51 Substitution
Substitution (Birmingham) makes a substitution, with Wade Elliott coming on for Peter Ramage.64:42
Andros Townsend produces a cross, Ricardo Rocha makes a clearance.63:03
Inswinging corner taken by Andros Townsend from the right by-line played to the near post, George Thorne manages to make a clearance.62:50
The ball is delivered by Chris Burke, Jason Pearce makes a clearance.61:45
The ball is sent over by Guirane N'Daw, Jason Pearce manages to make a clearance.61:17
Unfair challenge on Peter Ramage by Luke Varney results in a free kick. Free kick taken by Peter Ramage.59:52
Assist by Greg Halford.59:52 Goal scored
Goal! - David Norris - Portsmouth 2 - 1 Birmingham David Norris fires in a goal from just inside the penalty area to the bottom right corner of the goal. Portsmouth 2-1 Birmingham.59:41
The ball is crossed by Greg Halford, Steven Caldwell manages to make a clearance.58:42
Free kick taken by Scott Allan.58:42 Dismissal
Dismissal David Murphy is sent off.58:34
David Murphy concedes a free kick for a foul on Chris Maguire.57:37
Chris Burke is ruled offside. Ricardo Rocha restarts play with the free kick.56:29
Ricardo Rocha challenges Marlon King unfairly and gives away a free kick. Free kick crossed right-footed by Chris Burke from left wing, Jamie Ashdown makes a save.53:21
Assist on the goal came from Greg Halford.53:21 Goal scored
Goal! - Chris Maguire - Portsmouth 1 - 1 Birmingham A goal is scored by Chris Maguire from deep inside the penalty area to the bottom right corner of the goal. Portsmouth 1-1 Birmingham.51:32
Indirect free kick taken by Greg Halford.51:32 Booking
Booking Curtis Davies goes into the book for unsporting behaviour.51:15
Curtis Davies gives away a free kick for an unfair challenge on Luke Varney.51:00
Marlon King takes a shot. Save made by Jamie Ashdown.50:05
Marlon King crosses the ball, Close range headed effort by Nikola Zigic misses to the right of the target.47:53
Shot from long range by Scott Allan goes wide of the left-hand upright.46:22
Corner taken by Chris Burke from the left by-line. Marlon King takes a shot. Save made by Jamie Ashdown.45:01
The referee gets the second half underway.45:00 +2:13 Half time
Half Time The half-time whistle blows.45:00 +1:45
Effort from outside the penalty box by Andros Townsend goes wide right of the target.45:00 +0:54
Unfair challenge on Andros Townsend by Chris Maguire results in a free kick. Indirect free kick taken by Steven Caldwell.45:00 +0:16
Foul by Peter Ramage on Chris Maguire, free kick awarded. Scott Allan takes the free kick.44:11
Outswinging corner taken right-footed by Scott Allan from the right by-line.44:06
The ball is delivered by Scott Allan, Marlon King gets a block in.40:41
Short corner taken by Luke Varney from the left by-line. The ball is sent over by Tal Ben-Haim, save made by Boaz Myhill.40:29
Chris Maguire takes a shot. Save by Boaz Myhill.37:57
Shot from just outside the box by George Thorne goes over the target.37:27
Scott Allan takes the free kick.37:27 Booking
Booking Booking for David Murphy.37:09
David Murphy gives away a free kick for an unfair challenge on Scott Allan.35:00
Shot from close range by Luke Varney misses to the right of the goal.34:21
Nikola Zigic takes a shot. Comfortable save by Jamie Ashdown.33:48
Chris Maguire is ruled offside. Boaz Myhill takes the indirect free kick.33:00
Free kick awarded for an unfair challenge on David Murphy by Luke Varney. Steven Caldwell takes the indirect free kick.31:16
Free kick awarded for a foul by Luke Varney on David Murphy. Boaz Myhill restarts play with the free kick.29:31
David Murphy produces a cross, Jamie Ashdown makes a save.24:17
The offside flag is raised against Chris Maguire. Free kick taken by Boaz Myhill.23:38
Scott Allan fouled by Guirane N'Daw, the ref awards a free kick. Free kick taken by Tal Ben-Haim.21:29
Nikola Zigic gives away a free kick for an unfair challenge on Scott Allan. Ricardo Rocha takes the indirect free kick.20:41
The assistant referee flags for offside against David Norris. Indirect free kick taken by Boaz Myhill.19:44
Joel Ward takes a shot. Save made by Boaz Myhill.18:55
Free kick awarded for a foul by Marlon King on Joel Ward. Free kick taken by Jason Pearce.17:56
Scott Allan concedes a free kick for a foul on Andros Townsend. Chris Burke crosses the ball from the free kick right-footed from left wing.16:34
The referee blows for offside against Greg Halford. Boaz Myhill takes the free kick.14:34
Luke Varney concedes a free kick for a foul on Curtis Davies. Boaz Myhill restarts play with the free kick.12:55
Nikola Zigic is flagged offside by the assistant referee. Jamie Ashdown restarts play with the free kick.11:59
Chris Burke produces a right-footed shot from just outside the box that misses to the right of the net.11:14
Scott Allan gives away a free kick for an unfair challenge on Andros Townsend. Free kick taken by David Murphy.10:47
Luke Varney is caught offside. Boaz Myhill takes the free kick.6:59
Marlon King provided the assist for the goal.6:59 Goal scored
Goal! - Nikola Zigic - Portsmouth 0 - 1 Birmingham Nikola Zigic fires in a goal from inside the box to the bottom right corner of the goal. Portsmouth 0-1 Birmingham.6:04
Chris Burke sends in a cross, Jamie Ashdown makes a comfortable save.5:26
Keith Fahey has an effort at goal from just inside the box that misses to the left of the target.4:44
Ricardo Rocha challenges Marlon King unfairly and gives away a free kick. Keith Fahey restarts play with the free kick.3:55
Andros Townsend delivers the ball.3:10
Luke Varney is ruled offside. Boaz Myhill takes the indirect free kick.2:21
The referee gives a free kick against Marlon King for handball. Indirect free kick taken by Tal Ben-Haim.1:55
Chris Burke crosses the ball, save by Jamie Ashdown.1:00
The ball is crossed by David Murphy, Greg Halford makes a clearance.0:00
The match begins.
Live data and text provided by our data suppliers