Manchester City maintained their unbeaten start to the season with a dramatic victory against Portsmouth, but Stuart Pearce's high-flying side achieved their latest success the hard way.
After failing to turn territorial advantage into goals City were stunned when Pompey stole into the lead in the second half through Colombian new boy John Viafara.
City displayed the never say die spirit Pearce had shown as a player as they hit back with two goals in a deadly three-minute spell from Claudio Reyna and Andrew Cole to snatch victory.
Portsmouth, who had only picked up one point from their first three Premiership fixtures, were on the back foot from the kick-off and almost conceded a first-minute goal.
Only a brilliant reflex save from Dutch goalkeeper Sander Westerveld kept out Cole's overhead kick, which was destined for the top corner of the net.
Danish defender Brian Priske almost put through his own goal before Reyna fired narrowly wide, all this inside the first seven minutes.
Pompey created a couple of decent openings midway through the first half but no-one was able to reach Viafara's header or Laurent Robert's low cross as they flashed across the face of goal.
It remained largely one-way traffic and City came within inches of taking the lead when Kiki Musampa's cross from the left dropped over the head of Westerveld and struck the top of the crossbar.
City's frustration mounted as they had a penalty appeal waved aside when Musampa's cross struck the hand of Andy Griffin, with referee Alan Wiley ruling it was not deliberate.
And deep into injury-time the home side came close to breaking the stalemate when Darius Vassell robbed Priske and broke away, only to fire into the side netting.
Portsmouth forced home keeper David James into his first save of the match early in the second half when he dived to turn away a shot from Lomana LuaLua.
City, who had been so much on top, were shocked as the visitors stormed ahead after 52 minutes, when Viafara was left unmarked inside the six-yard box to head home.
It was then a case of backs to the wall defending, as Portsmouth desperately tried to hold onto their precious lead, with Westerveld making another excellent save to turn away Vassell's goal-bound shot.
The hosts' persistence finally paid off in the 66th minute when Westerveld failed to hold onto Joey Barton's cross and Reyna fired in the loose ball from eight yards.
City struck again three minutes later to take a lead their play deserved. Cole brilliantly controlled a right-wing cross from Trevor Sinclair and his superb first touch beat defender Any O'Brien, before he shot low past Westerveld.
Cole twice came within a whisker of making it three. First, he was within inches of connecting at the far post with a ball played in by Vassell and then in the final minute he shot narrowly wide after being set up by Vassell and Sinclair.
Man of the Match: Claudio Reyna
City's American playmaker pulled the strings in midfield as Stuart Pearce's side dominated proceedings. His goal was just reward for a match-winning performance.