Jonny Williams completed a neat move to ensure the Londoners went in ahead at the break at a blustery Fratton Park.
The Blues enjoyed almost total territorial advantage in the second half, but Chuks Aneke scored against the run of play to seal their fate.
Kenny Jackett stuck with the same side that beat Northampton earlier in the week, although Ellis Harrison was fit enough to return on the bench.
With this being Pompey’s closest home league match to Armistice Day, there were tributes on the big screen before kick-off.
A recording of the late John Jenkins MBE reading the Ode of Remembrance was played before a video of the Last Post being played on Portsdown Hill.
The hosts looked bright when the action started and Charlton seemed nervous with some of their defending.
And they probably should have broken the deadlock on five minutes, only for Ronan Curtis to fire over the bar from Marcus Harness’ cut-back.
A teasing free-kick from Lee Brown on the right then narrowly missed the head of the Republic of Ireland international.
The visitors might have feared going down to 10 men midway through the first half when skipper Darren Pratley slid in very late on Callum Johnson.
He was perhaps helped by the right-back’s refusal to over-act, although even then it came as a surprise when referee Carl Boyeson refused to brandish even a yellow card.
And the Addicks then forged ahead a few minutes later, courtesy of a quick move started by Jake Forster-Caskey.
The midfielder picked out Ian Maatsen on the left and his first time cross was slammed into the net from close range by Williams.
Pompey looked bright going forward and were passing the ball around nicely, although not really able to test Ben Amos.
The keeper did their work for them, taking a heavy touch and then almost seeing his clearance charged down by Curtis.
And the Blues finished the half with a flourish, as Brown’s ball into the danger zone was cleared by a well-placed Chris Gunter.
Adam Matthews then intercepted the ball to stop Andy Cannon receiving it back from Harness as he charged into the area.
Charlton Athletic 1
Jack Whatmough did not emerge from the tunnel following the interval, with Rasmus Nicolaisen replacing him at the heart of defence.
There was also a switch of system, as Harness moved out wide and Ryan Williams tucked in behind John Marquis.
Andy Cannon provided a shot on target early in the half, but the ball flew straight into the arms of Amos from outside the box.
Marquis was then unable to get enough of his head on Brown’s cross, while Williams’ ball back in was well claimed by a leaping Amos.
Pompey were certainly applying pressure, but were lacking that final killer pass to hurt their opponents.
And the visitors’ plan was clear when Amos was booked by Boyeson for taking an age over a goal-kick.
The keeper would have been relieved moments later when Curtis’ deflected free-kick left him wrong-footed, but flew past the post.
There was a welcome return to the pitch for Harrison just past the hour mark, with Harness the man to make way.
Pompey were camped out in the final third of the pitch, only to be met by a resolute wall of grey-shirted defenders.
They were almost caught on the break when Harrison’s effort ricocheted off Marquis and Charlton were able to break clear, but Craig MacGillivray denied Aneke.
And the hosts then had a chance of their own, with Williams’ angled attempt deflected wide of the post.
Instead it was the Addicks who were able to wrap things up on 82 minutes when two substitutes combined, as Aneke headed home Paul Smyth’s delivery at the back post.
Jordy Hiwula was brought on for his debut in place of Johnson for the closing stages of the contest, but the Blues were unable to find a route back into the contest.
Pompey (4-4-2): MacGillivray; Johnson (Hiwula 84), Whatmough (Nicolaisen 46), Raggett, Brown; Williams, Naylor (c), Cannon, Curtis; Harness (Harrison 64), Marquis
Subs not used: Bass, Pring, Morris, Close
Charlton (4-1-2-1-2): Amos; Matthews, Gunter, Famewo (Purrington 74), Maatsen; Pratley (c); Forster-Caskey, Shinnie; Williams (Smyth 71); Washington, Bogle (Aneke 71)
Goals: Williams 26, Aneke 82
Booked: Amos, Maatsen, Aneke
Subs not used: Maynard-Brewer, Morgan, Levitt, Vennings
Referee: Carl Boyeson