Izale McLeod scored twice as Portsmouth made it five league games unbeaten with victory over Shrewsbury.
After a goalless first half, McLeod found Wes Thomas, who rounded keeper Chris Weale to slide home, and then scored the second himself with a chip.
Marvin Morgan pulled one back from a rebound and was sent off moments later following a dispute with referee Fred Graham after a booking for the striker.
McLeod sealed the points in the last minute from a tight angle.
The result means in their 10 trips to Fratton Park, dating back 102 years, Shrewsbury have lost them all, shipping 29 goals and scoring just three - Mal Starkey in 1961, Steve Cross in 1983 and Morgan in 2012.
VIEWS FROM THE DRESSING ROOM
Portsmouth manager Michael Appleton told BBC Radio Solent:
"It wasn't the prettiest today, we've certainly played a lot better and lost games so far this season, but it was a game we would have lost probably six weeks ago.
"I thought we moved the ball a little bit quicker in the second half and we didn't do it quick enough in the first half.
"With good performances you get better results, I still stand by and say that hopefully come November we'll be playing much better and getting much better results.
"I think Shrewsbury played quite well today, they'll probably feel unfortunate to come away with nothing.
(On Portsmouth Supporters' Trust being named preferred bidder to purchase the club by administrators) "It'll probably be the middle or end of next week before we really sit down and talk seriously about the future of the football club, and hopefully we can be in a position before January or in January where we can actually sign players and take the club forward."
Shrewsbury Town manager Graham Turner told BBC Shropshire:
"There is no doubt we dominated the first half and we were by miles the better team but we can't concede goals to get them back into it.
"We then got ourselves back - but Marvin got sent off and we shouldn't have lost the game."
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +6:39 Booking
Booking Wes Thomas receives a caution.90:00 +6:12
Izale McLeod is caught offside. Michael Hector restarts play with the free kick.90:00 +5:18
Free kick awarded for a foul by Gabor Gyepes on Terry Gornell. Free kick taken by Matthew Richards.90:00 +3:37
The assist for the goal came from Johnny Ertl.90:00 +3:37 Goal scored
Goal! - Izale McLeod - Portsmouth 3 - 1 Shrewsbury Goal scored by Izale McLeod from inside the six-yard box to the bottom right corner of the goal. Portsmouth 3-1 Shrewsbury.90:00 +0:40
Brian Howard takes a short corner.86:20
Unfair challenge on Luke Summerfield by Wes Thomas results in a free kick. Matthew Richards takes the direct free kick.84:30 Substitution
Substitution Jack Compton replaces Akos Buzsaky.82:15
Short corner worked by Paul Parry.79:51
Corner taken by Sam Winnall, clearance by Johnny Ertl. Luke Summerfield takes a shot. Chris Weale makes a save. Paul Parry takes the inswinging corner, Brian Howard makes a clearance.76:03 Substitution
Substitution Jon Harley goes off and Ashley Harris comes on.76:03 Booking
Booking Terry Gornell goes into the book.75:45
Terry Gornell gives away a free kick for an unfair challenge on Akos Buzsaky. Akos Buzsaky restarts play with the free kick.70:36 Substitution
Substitution Terry Gornell on for Aaron Wildig.70:36 Substitution
Substitution Sam Winnall replaces Jon Taylor.68:04
Corner taken by Brian Howard from the right by-line to the near post, save made by Chris Weale.67:22 Booking
Booking Luke Summerfield goes into the book.66:26
The referee blows for offside. Chris Weale takes the direct free kick.65:14 Booking
Booking The referee books Michael Hector for unsporting behaviour.
Michael Hector gives away a free kick for an unfair challenge on Izale McLeod. Direct free kick taken by Brian Howard.62:48
Corner taken right-footed by Jon Taylor.62:04
Corner taken by Brian Howard.60:52 Dismissal
Dismissal Marvin Morgan receives a red card for foul and abusive language.60:30 Booking
Booking Marvin Morgan is given a yellow card.60:01 Goal scored
Goal! - Marvin Morgan - Portsmouth 2 - 1 Shrewsbury Goal scored by Marvin Morgan from close range to the top left corner of the goal. Portsmouth 2-1 Shrewsbury.57:10
Brian Howard provided the assist for the goal.57:10 Goal scored
Goal! - Izale McLeod - Portsmouth 2 - 0 Shrewsbury Izale McLeod gets on the score sheet with a goal from close in high into the middle of the goal. Portsmouth 2-0 Shrewsbury.56:23
Corner taken short by Jon Taylor.54:43
Assist on the goal came from Izale McLeod.54:43 Goal scored
Goal! - Wes Thomas - Portsmouth 1 - 0 Shrewsbury Wes Thomas fires in a goal from close in low into the middle of the goal. Portsmouth 1-0 Shrewsbury.51:42
Free kick crossed by Akos Buzsaky, clearance made by Marvin Morgan.51:42 Booking
Booking Asa Hall goes into the referee's book for unsporting behaviour.51:26
Akos Buzsaky fouled by Asa Hall, the ref awards a free kick.48:49
Akos Buzsaky delivers the ball.46:37
Free kick awarded for an unfair challenge on Brian Howard by Aaron Wildig. Direct free kick taken by Brian Howard.46:03
Lubomir Michalik fouled by Marvin Morgan, the ref awards a free kick. Mikkel Andersen restarts play with the free kick.45:01
The match restarts for the second half.45:00 +0:09 Half time
Half Time The referee blows for half time.44:51
Effort on goal by Luke Summerfield from long range goes harmlessly over the bar.44:34
The official flags Marvin Morgan offside. Mikkel Andersen takes the free kick.42:57
Gabor Gyepes gives away a free kick for an unfair challenge on Marvin Morgan. Free kick taken by Paul Parry.38:43
The offside flag is raised against Marvin Morgan. Mikkel Andersen takes the indirect free kick.37:04
The official flags Izale McLeod offside. Chris Weale takes the free kick.36:22
Asa Hall takes a shot. Save by Mikkel Andersen.35:21
Izale McLeod has a shot and went wide left of the target.34:42
Izale McLeod challenges Jermaine Grandison unfairly and gives away a free kick. Free kick taken by Chris Weale.31:48
The ball is sent over by Marvin Morgan, Shot by Paul Parry from inside the six-yard box clear the bar.30:21
Akos Buzsaky takes a shot. Jermaine Grandison gets a block in.20:50
Jon Harley challenges Michael Hector unfairly and gives away a free kick. Direct free kick taken by Chris Weale.20:06
Lee Williamson gives away a free kick for an unfair challenge on Marvin Morgan. Free kick taken by Marvin Morgan.17:56
Outswinging corner taken by Brian Howard from the left by-line.17:32
Asa Hall takes a shot. Save by Mikkel Andersen.15:28
Jon Harley delivers the ball.13:46
Shot from close range by Wes Thomas misses to the right of the goal.12:52
Lee Collins gives away a free kick for an unfair challenge on Jon Harley. Brian Howard takes the free kick.12:11
The referee blows for offside against Izale McLeod. Chris Weale takes the free kick.9:34
The offside flag is raised against Brian Howard. Chris Weale takes the free kick.4:57
Paul Parry takes a shot. Save made by Mikkel Andersen. Corner taken left-footed by Paul Parry to the near post, Gabor Gyepes fouled by Michael Hector, the ref awards a free kick. Mikkel Andersen takes the direct free kick.3:49
Jon Taylor takes a inswinging corner.2:22
The official flags Paul Parry offside. Mikkel Andersen takes the indirect free kick.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers