Rob Hulse had given the visitors an early lead at Fratton Park but the hosts turned the game around at the start of the second half, equalising before Sol Campbell established the lead.
Noe Pamarot then extended the advantage with his second in two games after netting last week against Arsenal.
The home fans in the 20,164 crowd, the highest at Fratton Park this season, were warmed by chants of competing in the European Cup.
They are unbeaten in five matches, which includes draws at Anfield and the Emirates Stadium, and have given themselves every chance given how tight the league is below the bottom two.
But victory looked a remote possibility after a wretched start in a first half when they never got going.
David James had collected the Pompey player-of-the-month award just prior to kick-off, but one of his first tasks when play was under way was to pick the ball out of the net.
Hulse opened the scoring in the fourth minute with a simple header, planting his close-range effort past James for his sixth of the season since arriving from Leeds in the summer.
Derek Geary was given plenty of time on the left and curled a cross that dipped over Campbell and onto the head of Hulse.
Neil Warnock has been promised funds to bolster his squad in the January transfer window, but the players currently at his disposal showed a determination to keep their place in the side.
Strikers Hulse and Danny Webber in particular chased every lost cause and never gave Pompey's defence a chance to settle on the ball.
Warnock had resisted the temptation to pack his midfield and his bravery had resulted in a four-match unbeaten run before the trip to the south coast, three of which were wins.
His side refused to sit on their lead, pushing the hosts and searching for another, but failing to take their chances and that ultimately cost them.
Webber seized on a mistake by Sean Davis and latched onto a long clearance from defence, only to flash wide of the post.
Stephen Quinn also wasted an opportunity from a promising position - his effort somewhere between shooting and crossing - and had a volley saved by James in the final moments of the first half.
Pompey, by contrast, had looked off the pace initially. Falling behind forced them to attack, but Benjani, returning to the side, and Kanu failed to test Paddy Kenny early on.
Kanu did have a penalty shout in the 13th minute when he was challenged by Hulse when Davis' free-kick sliced into the Nigerian's path.
Slack passing and a lack of understanding between their players was illustrated by Glen Johnson's stray pass to an empty flank when team-mates were in the penalty area.
Kenny did well to claim a cross from Matt Taylor but the Republic of Ireland goalkeeper was not truly tested until he parried away a drive from Gary O'Neil. The rebound was wasted but Benjani had strayed offside anyway.
Pompey turned the match around within 10 minutes of the restart.
They were level two minutes into the second period when Benjani's cross from the right was deflected off Phil Jagielka's heel and Robert Kozluk could not keep the ball out on the line.
And the hosts were ahead in the 54th minute when Campbell rose to crash in a header from Taylor's corner.
Pompey's confidence was lifted by the goals, and Taylor looked for another spectacular strike to add to his tally this season but this time cleared the crossbar with one effort and dragged another wide.
His set-pieces were causing problems but it was a corner from the right flank, from Pedro Mendes, which helped extend the lead in the 67th minute.
Pamarot found room in the area to send home a header from Mendes' set-piece.
Benjani tried his best to get himself on the score sheet but went wide with his best effort.