Three goals in a damaging 15-minute burst saw Wanderers lose a lead and the points at a fired-up Fratton Park.
When Dion Charles struck his 18th goal of the season just after half-time, Ian Evatt’s men looked as though they could go on and rack up another priceless win and go third in the table.
But Wanderers were unable to ram home their advantage and then succumbed late on as in-form Pompey became only third side this season to put three goals past the Whites in League One.
Shrewsbury were the last to do in early December before Wanderers responded with a run of just two defeats in their next 17 games.
And the Whites will now be looking for a similar reaction after getting undone by a trio of set-pieces to end their hopes of a seventh win in their last eight games.
Wanderers made four changes to their starting line-up for their seventh and final game of a demanding month.
The Whites had barely put a foot wrong in February but they made an erratic start against a Portsmouth side on the climb under new management since their 3-0 defeat at Bolton in January.
Pompey had lost just two of their eight games since then and almost went in front when a mis-cued clearance from Kieran Lee allowed Connor Ogilvie to return the ball for Ronan Curtis to clip the ball just over the bar.
Lee looked to make amends at the other end with an excellent run to the by-line before pulling the ball back for Shola Shoretire, whose goalbound flick was blocked.
Shoretire then had a better chance to break the deadlock but from Aaron Morley’s perfectly delivered free-kick headed wide 25 minutes into a first half laced with errors.
A number of those came from Wanderers in a couple of strangely shaky periods, summed up by a lapse from James Trafford which nearly gifted Pompey the lead.
The Wanderers’ keeper had mis-cued a couple of clearances and when his mis-directed pass went straight to Owen Dale, he had to bale his side out with a vital save at the feet of the Portsmouth midfielder as the Whites reached the break level.
Wanderers needed to raise their game and they did that immediately after the re-start to grab the lead four minutes into the second half.
One of their best moves of the night so far ended with the over-lapping Gethin Jones earning the visitors’ first corner of the night.
And when Eoin Toal’s header was blocked from Morley’s delivery, the predatory Charles pounced inside the six-yard box to ram home his 15th league goal of the season.
Suddenly Wanderers carried a threat every time they went forward and with nearly an hour gone had a chance to double their lead when Shoretire played in Kyle Dempsey for a chance he fired wide.
Had that gone in Portsmouth might have been killed off, but with a vocal crowd behind them they rallied to the cause with the wind and driving rain behind them.
Wanderers – with Ricardo Almeida Santos a tower of strength at the back – still seemed able to deal with everything Pompey offered.
But with 17 minutes to go their defences were breached as the hosts grabbed an equaliser to spark their comeback with the first of Ryley Towler’s two goals.
A free-kick from Joe Rafferty was allowed to reach Towler and the defender powered home a header to make it 1-1 and change the complex of the contest.
With the momentum now behind them and Wanderers unable to stem the flow, Towler then steered home a Joe Morrell cross after staying up following another set-piece.
And a tough night for Wanderers was then compounded when Portsmouth made sure of the points with Colby Bishop’s neat flick into the corner of the net confirming a third win in four games for the revitalised home side and leaving the Whites to ponder a missed opportunity.
Wanderers: Trafford; Jones, Almeida Santos, Toal; Bradley, Morley, Dempsey, John; Lee (Sheehan 86); Shoretire (Kachunga 72), Charles (Nlundulu 75). Substitutes: Sheehan, Isgrove, R Williams, Mbete, Adeboyejo.
Booked: Santos, Bradley, Lee, Toal
Portsmouth: Macey; Rafferty, Raggett, Towler, Ogilvie; Tunnicliffe, Morrell; Dale, Jacobs (Scarlett 67), Curtis (Pigott 81); Bishop. Substitutes: Oluwayemi, Thompson, Lowery, Bernard, Lane.
Referee: Stephen Martin
Attendance: 17,132 (Wanderers 592)