Shrewsbury Town are still waiting for their first victory at Fratton Park after defeat on a day when Marvin Morgan went from hero to villain inside two minutes.
Morgan struck just after the hour to reduce the deficit to 2-1, slotting home a rebound from a tight angle after a Luke Summerfield shot had been saved.
But the striker was sent off immediately after for what appeared to be protests to referee Fred Graham after conceding a free-kick.
That formed part of a manic start to the second period with Portsmouth themselves scoring twice in three minutes.
The deadlock was broken by Wes Thomas who capitalised on a slip from Michael Hector on 55 minutes before Izale McLeod dinked a neat finish over Chris Weale three minutes later.
Morgan's goal and red card were followed by decent periods of Town pressure with Summerfield seeing a 25-yard shot tipped over by Portsmouth goalkeeper Mikkel Andersen while Jermaine Grandison had a shot cleared off the line.
But Town hopes were ended when McLeod wrapped up the points with a neat 12 yard finish in injury time.
Shrewsbury were the better side in the first half with Paul Parry missing a golden chance when he fired over from six yards, while he also saw two efforts well saved by Andersen.
But it's now 10 defeats from as many games for Town at Fratton Park and the search for an away win this season goes on.