Charlton came from behind to maintain their unbeaten away record and leave Portsmouth still looking for a first home Premiership win.
Dario Silva gave Pompey an early lead, firing a ferocious shot across Stephan Andersen for his first Pompey goal.
Darren Ambrose rounded off a slick move to score his first goal for Charlton to draw level.
Danny Murphy slid a pass through for Dennis Rommedahl to score the winner and take Charlton into second place.
Pompey were fired-up from the start and immediately forced Charlton on to the back foot.
Silva wriggled free in the opening minutes, only for his control to let him down, while John Viafara glanced a header just wide from a corner.
Charlton keeper Stephan Andersen did well to hold on to Gary O'Neil's stinging drive with Silva lurking to pounce on any spillage.
As Pompey piled on the pressure, Radostin Kishishev and Hermann Hreidarsson were both booked in the space of two minutes.
Pompey's early pressure told as Silva swept them into the lead. The Uruguayan gave chase to a long ball and from the tightest of angles lashed a powerful shot across Andersen for his first Premiership goal.
Charlton cleared their heads as Pompey's early fire burned itself out and it required two good saves from Ashdown to keep them ahead.
He first spread himself to block as Ambrose picked his way past weak challenges from Dejan Stefanovic and Brian Priske and Ashdown then dropped sharply on the nasty dipping shot.
With Silva ploughing the loneliest of furrows up front Pompey's ploy was to get midfielders in support, but it surrendered the initiative and threatened to allow Charlton back into the game.
Charlton attempted to use the pace of Rommedahl to stretch Portsmouth down the flanks but Stefanovic and Andy O'Brien were commanding when crosses came in and Ashdown was rarely troubled.
Zvonimir Vucik relieved the pressure and almost doubled Pompey's lead when he skillfully picked his way past a couple of challenges but Andersen saved his shot at the foot of the post.
Silva's first goal fired Pompey ahead
Charlton kept their passing game going and their patience was rewarded when Murphy rounded off an intricate move by sliding a pass through for Ambrose to slip his shot under the advancing Ambrose.
With Pompey reeling, Ambrose planted an unmarked header over the top seconds later from Darren Bent's cross.
Charlton began to dominate and it was no surprise when they took the lead with another fine strike.
Vukic was caught in possession and Murphy was again the provider, sliding a ball through for Rommedahl to lash an emphatic finish across Ashdown.
Vukic had a chance to redeem himself but volleyed over from eight yards.
Pompey boss Alain Perrin:
"We started very well and had many chances to score in the first half. I think we forgot to play, we stopped playing, there was no movement.
"We lost confidence and Charlton made the most of it.
"When results are not good you are under pressure but we have to prove we can win games. We have to win away at Sunderland and against Wigan at home."
Charlton manager Alan Curbishley:
"I was so disappointed, Portsmouth looked two yards quicker than us and played all the football for the first 30 minutes.
"We were lucky to go in one down. But I saw signs just before half-time we were getting back in it.
"And in the second half we were prepared to take a few chances."
Portsmouth: Ashdown, Priske, O'Brien, Stefanovic, Vignal, Viafara, O'Neil, Taylor (Hughes 87), Vukic (Mbesuma 88), Robert (Todorov 87), Silva.
Subs Not Used: Westerveld, Griffin.
Booked: Robert, Vignal.
Goals: Silva 14.
Charlton: Andersen, Young, Perry, Hreidarsson, Spector, Rommedahl (Johansson 83), Kishishev, Murphy (El Karkouri 90), Smertin, Ambrose, Bent.
Subs Not Used: Kiely, Hughes, Bothroyd.
Booked: Kishishev, Hreidarsson, Ambrose.
Goals: Ambrose 61, Rommedahl 77.
Ref: H Webb (S Yorkshire).