Shaun Wright-Phillips was Manchester City's inspiration as they inflicted a third successive Premiership defeat on Pompey to go above them in the table.
The England man punished a defensive error by firing City into a lead they held for just two minutes.
Gary O'Neil volleyed Pompey level, but Antoine Sibierski's equally crisp volley deservedly restored City's lead.
Paul Bosvelt followed up to seal victory after great work by Wright-Phillips opened up the Pompey defence.
Portsmouth boss Harry Redknapp had hardly taken his seat after collecting his manager of the month award when he saw his side fall behind.
A slip by Dejan Stefanovic was all that Wright-Phillips needed to collect the ball and clip the ball past goalkeeper Jamie Ashdown.
But Portsmouth drew level within two minutes as David Unsworth found space on the left to deliver a telling cross and as City defenders stood rooted to the spot, O'Neill zeroed in to side-foot a volley past David James for his first Premiership goal of the season.
Nigel Quashie almost threaded a pass through the eye of a needle for Ricardo Fuller, only for Sylvain Distin to snake out a leg and intercept.
Sibierski fired City into a deserved lead
The gamble to start Lomana LuaLua, who had been carrying a groin injury, failed when he limped off on 25 minutes to be replaced by former City favourite Eyal Berkovic.
But within a minute, City were forced to re-shuffle when Nicolas Anelka hobbled off with an ankle injury to be replaced by Robbie Fowler.
City's marking again proved woeful when Amdy Faye escaped at a free-kick to power in a header which James tipped over the bar.
Unsworth was struggling against Wright-Phillips' pace and when the Portsmouth defender hauled the England man down he was shown his fifth yellow card of the season, triggering a suspension.
Arjan De Zeeuw was booked for tugging back Fowler and almost paid double when the former Liverpool striker escaped his marker at the resulting free-kick and planted his header into the side-netting.
City asked the question at the start of the second half and after Distin delicately touched back a corner at the far post, Stefanovic just got a foot in to take the sting out of Stephen Jordan's shot.
Richard Dunn threaded a pass into Wright-Phillips' stride and the England winger picked his way through four blue shirts before pulling his shot just wide.
Ashdown looked distintcly uncertain as Joey Barton whipped in a corner but atoned for it with a fingertip save as Jon Macken worked himself a yard of shooting space.
Ashdown kept Man City at bay with a string of fine saves
City's marking again gave cause for concern when Unsworth was left unattended to plant a header at James from six yards out.
Conditions were treacherous underfoot and Linvoy Primus needed to time his tackle perfectly as Sibierski moved on to Macken's flick.
Ashdown kept his side alive when he launched himself to his left to tip away Fowler's full-blooded drive.
Manchester City began to turn the screw and Stefanovic made up for his first-half error with a last-ditch tackle on Wright-Phillips as he cocked the trigger.
Ashdown was again the winner as Fowler let rip with a full-blooded drive but for all their superiority City again escaped as a corner dropped for De Zeeuw, prompting a manic scramble before the ball was hacked clear.
City finally made the breakthrough they had threatened on 78 minutes when Fowler skipped past Unsworth on the right touchline and crossed to the far post where Sibierski volleyed home from 10 yards.
But almost immediately Unsworth almost punished some lax defending when he headed over from eight yards.
City deservedly sealed the points as Bosvelt tapped into an empty net after Ashdown had parried Wright-Phillips shot.
Portsmouth: Ashdown, Primus (Griffin 85), De Zeeuw, Stefanovic, Unsworth, O'Neil, Quashie, Faye, Berger (Taylor 74),
LuaLua (Berkovic 26), Fuller.
Subs Not Used: Cisse, Wapenaar.
Booked: Faye, Unsworth, De Zeeuw.
Goals: O'Neil 8.
Man City: James, Onuoha, Dunne, Distin, Jordan,
Shaun Wright-Phillips, Bosvelt, Barton, Sibierski, Macken,
Anelka (Fowler 27).
Subs Not Used: Waterreus, Sommeil, Bradley Wright-Phillips,
Goals: Shaun Wright-Phillips 6, Sibierski 79, Bosvelt 87.
Ref: M Messias (S Yorkshire).