Two goals in five second-half minutes from Glen Johnson and Hermann Hreidarsson condemned City to a seventh league defeat on their travels this season.
Portsmouth, who had Paul Hart and former Manchester United number two Brian Kidd in caretaker charge, were clearly eager to impress any prospective new manager following Tony Adams' sacking and could have been 2-0 up by half-time.
David Nugent should have put Pompey into the lead after only ten minutes when he raced onto Niko Kranjcar's lofted through ball but a heavy first touch forced him wide and the former England international could only shoot into Shay Given's side-netting.
City hammered Portsmouth 6-0 in the reverse fixture in September but took until the 23rd minute to launch their first meaningful attack when Brazilian midfielder Elano put a 25-yard curler high into the stands behind David James' goal.
Nugent then passed up gilt-edged chance 17 minutes before half-time.
Johnson got the better of England team-mate Wayne Bridge down the right wing before delivering a teasing centre only for Nugent to place a free header two yards wide after being left completely unmarked at Given's back post.
Portsmouth continued to dominate after half-time and Nugent completed a hat-trick of wasted chances in the 55th minute when he was set free down the right by Kranjcar's threaded pass.
Nugent did well to out-muscle Nedum Onuoha but should have done better than rolling the ball harmlessly past Given's right-hand post after shooting across goal.
Portsmouth finally got the goal they deserved in the 70th minute when Johnson took advantage of more woeful City defending to bag his third goal of the season.
Johnson was left free to cut in from the right touchline before seeing a powerful 12-yard shot beaten away by Given.
City's defenders stood and watched as Johnson hammered the rebound past the grounded Given and into the roof of the net.
Hreidarsson put the game out of City's reach 15 minutes from time with his second goal in as many games.
He climbed above the City defence before planting a bullet header into the top right corner from Jermaine Pennant's right-wing corner.
Portsmouth goalkeeper James was given little to do as he set a new Premier League appearance record of 536 games and the England number one's fine flying save from substitute Ched Evans' 80th minute header was the closest City came to scoring.
City were booed off by their travelling supporters at the final whistle and the defeat would have been even more comprehensive but for Shaleum Logan's goal-line clearance to deny Johnson a second goal in the final minute.