Danny Murphy staked up his claims for a place in England's World Cup squad. with an inspired second-half display to lead Charlton into second place in the Premiership.
Murphy made both goals as Alan Curbishley's side fought back from 1-0 down to maintain their trailblazing start to the season.
Portsmouth came into the match looking for a first home win since April demolition derby victory over Southampton.
Alain Perrin's men made the better start and could have been in front after only three minutes. Laurent Robert unleashed a 25-yard piledriver which Charlton's Danish goalkeeper Stephan Andersen somehow managed to tip on to the post.
Colombian midfielder John Viafara almost made Charlton pay with the resulting corner when he nodded Robert's kick across the face of goal.
The in-form Gary O'Neil had Andersen scrambling across his goal in the sixth minute.
Zvonimir Vukic carved open the Addicks defence and picked out O'Neil whose first-time shot across goal was palmed away by Andersen.
Radostin Kishishev picked up the first of five yellow cards dished out by fussy referee for a foul on Viafara in the sixth minute.
Captain Hermann Hreidarsson quickly joined the Bulgarian in the referee's book for a foul on Dario Silva seconds later. Hreidarsson's misery could have been compounded when Robert stepped up and smashed the resulting free-kick just wide.
Pompey finally made their dominance pay in the 14th minute when striker Silva ended a six-game goal drought with his first for the South Coast side.
Silva was drafted in to ease Pompey's scoring problems as a transfer deadline day signing from Sevilla.
He finally brought a smile to manager Perrin's face when he fired past Andersen and into the bottom right of the net with an unstoppable shot after racing on to to Andy O'Brien's lofted through ball.
England hopeful Darren Bent was restricted to a spectator's role for most of the first period but had a rare sniff of goal in the 21st minute.
Dennis Rommedahl crossed from the right but Bent narrowly failed to connect with the header.
Robert was booked for a foul on Rommedahl shortly after before Vukic fired over from long range in the 21st minute.
Jamie Ashdown denied Darren Ambrose in the 34th minute when he dived low to his left to keep out a long-range effort.
Pompey had a penalty appeal turned down three minutes before the interval when Silva claimed he was pushed by Chris Perry and TV replays later showed there was contact.
Pompey looked nervous as they reappeared for the second half but should have doubled their lead in the 57th minute
Vukic made space for himself on the edge of the area but his scuffed shot was easily dealt with by Andersen.
Vukic was made to pay for his wastefulness four minutes later when the impressive Ambrose drew Charlton level with his first goal since his summer move from Newcastle.
Murphy played a neat through-ball for Ambrose who beat the offside trap before coolly slotting the ball past Ambrose.
It could have been worse for Pompey but for Ashdown, who did brilliantly to dive at the feet of Bent and somehow clear the ball away after the former Ipswich striker had been played through by Murphy.
Ambrose could have had a second seconds later when he headed over from Bent's right-wing cross.
Portsmouth players would have spent their Friday evening watching the Trafalgar 200 celebrations on television and Nelson's famous flagship HMS Victory is housed a couple of miles from the ground in the dockyard.
However, Perrin's hopes of masterminding a victory of his own disappeared 13 minutes from time when Rommedahl fired Charlton into the lead.
Murphy robbed Vukic midway inside the Pompey half before picking out Rommedahl who fired a stunning strike into the corner of Ashdown's goal.
Man of the Match: Darren Ambrose - Gave an all-action display in the Charlton midfield and got his reward with his first goal for the club since signing from Newcastle in the summer.