An injury time goal from Salif Diao secured the Potters a second away win of the season after ten men City came from behind at Fratton Park.
After going behind to Frederic Piquionne's first half effort the Potters hit back through Robert Huth minutes after half time, with Andy Wilkinson's controversial dismissal sandwiched between the Huth goal and Diao's winner.
The Potters started the brighter with Delap's throw ins causing problems and Whelan, Shawcross, Fuller, Sidibe and Tuncay all going close for the Potters before Piquionne had the ball in the net on twenty minutes. The effort was ruled out however, for offside.
That close call started a spell of pressure for Pompey with Belhadj going close from distance and Sorenson just avoiding Dindane as the Ivorian chased down a back pass. The pressure told on thirty five minutes when a powerful effort from Owusu-Abeyie was parried out by Sorenson but Piquionne was first to react and he found the net from a tight angle with Sorenson unable to get across and cut off the shot.
The Potters stepped it up, as they attempted to force an equaliser before half time, and Tuncay's rasping shot tested James, forcing the England keeper to push the Turkish stars shot away from goal.
There was just one more chance before half time and it fell to Tuncay again but he failed to take it as he put a free header over the bar from 8 yards.
The second period started better for the Potters though when a Whelan corner was nodded in by Huth from 8 yards, leaving James with no chance. The game started to flow from end to end with O'Hara firing a free kick over for Portsmouth and Delap smashing an effort straight at James after a swift counter attack involving Tuncay and Fuller.
Jamaican hitman Fuller then went close when he blazed over after being teed up by Whelan before Wilkinson picked up his first booking on 67 minutes when he fouled Dindane. City continued to press and were well on top, Fuller being denied after racing clear and Shawcross stabbing wide after getting on the end of a Delap cross.
Referee Mike Dean then tried to grab all the headlines when he sent off Potters star Wilkinson. The full back was sprinting side by side with Dindane, and jostling with the striker without any real contact, when the ref pulled the game back and produced a second yellow card in six minutes for Wilkinson. The foul was non-existant with neither player hampered by the other in their attempt to get the ball but the ref's decision was final and City would play the final 17 minutes with ten men.
City had to soak up a bit of possession football from Pompey as O'Hara went close with a free kick after a foul by Diao, moments after the midfielder stepped onto the pitch. Subs were made here, there and everywhere with Utaka and Webber on for Pompey as they went with four up front and they were made to pay for their gung ho attitude when City struck a late winner.
Fuller had missed a good chance minutes prior but this time he was in total control as he carried the ball fourty yards, past three defenders, before drawing the keeper and squaring for Diao to tap into an empty net for his first Potters goal and a vital one at that.