Pompey moved up to fifth in the League One table following a fine victory at Sunderland.
Marcus Harness' early opener was cancelled out by Charlie Wyke, but John Marquis restored the lead for Kenny Jackett's side.
And it Marquis who wrapped up a 3-1 triumph from the penalty spot after Luke O'Nien had been sent off for a foul on Ryan Williams.