Stuart O’Keefe was credited with the goal, although it looked like Josh Magennis had actually sent the ball into his own net.
It might have been a more comfortable victory, but Brett Pitman saw his penalty superbly saved by Ben Amos.
Kenny Jackett made one change from the side that beat Northampton in the Checkatrade Trophy the previous week.
Fit-again skipper Pitman returned to lead the line following a hamstring problem, as Curtis Main dropped to the bench.
There were two former Pompey ‘Player of the Season’ winners in the Charlton squad, with Ricky Holmes starting and Jason Pearce named among the substitutes.
The hosts were celebrating the 25th anniversary of their return to The Valley – which, coincidentally, was for a match against the Blues in December 1992.
They won 1-0 on that day and a similar outcome looked on the cards as Jackett’s side struggled to make an impression in the early stages.
For all of the Addicks’ domination of possession, however, they were not doing much to test Luke McGee.
The keeper had to deal with a couple of dangerous crosses into the box, but was otherwise well protected by his defence.
And, as the first half progressed, it was the visitors who started to look the more dangerous outfit going forward.
They almost broke the deadlock on 29 minutes when Pitman laid the ball off for Gareth Evans, whose fierce effort was tipped over the bar by Amos.
The resulting corner was only cleared as far as O’Keefe outside the box and his effort looped onto the roof of the net.
A couple of half-chances followed for Pitman and Evans, with the Blues sensing they could make the most of some nervous defending.
But they were almost hit on the break when Jay Dasilva fed Holmes, whose shot was tipped over by McGee.
The action soon switched back down to the other end and it took a vital Chris Solly block to stop Conor Chaplin from sliding Pompey into the lead.
O’Keefe picked up the loose ball and his long-range shot took a deflection to divert it wide of the post.
But it was Charlton who had the final say before the break and McGee was called into action to deal with Dasilva’s curling effort.
Charlton Athletic 0
Chaplin did not emerge for the start of the second half, with Kyle Bennett taking his spot just behind Pitman.
And the Blues broke the deadlock within a couple of minutes of the restart – although there was some debate about who should take the credit for the goal.
It was O’Keefe who was announced as the man to have converted Evans’ fine free-kick into the box, although some argued it was Charlton’s Magennis who got the final touch.
Holmes soon had a chance at the other end, but his final delivery was somewhere in between a cross and a shot, with the ball flying out for a goal-kick.
Pompey were still looking to get forward themselves, however, and Pitman was not far off target with one effort, while Bennett then forced Amos into action.
They had an excellent opportunity to double their advantage on 65 minutes when referee Andrew Madley spotted a tug on Pitman by Solly in the area.
It was Pitman who unsurprisingly stepped up to take the spot-kick, only for Amos to dive to his left to make a superb save.
That gave the home side – and their supporters – a boost, but the hosts were still proving difficult to breach.
A bit of needle started to creep into the game, with Evans shown a yellow card for a late challenge on Holmes, who then joined him in the book by fouling McGee.
Nathan Thompson soon became the third player cautioned, although he did appear to win the ball from Holmes cleanly.
There was plenty of action unfolding at both ends and when one promising Blues move broke down, their opponents broke quickly, only for Mark Marshall to shoot straight at McGee.
Pompey’s keeper made a better save late on, though, getting quickly down to his right to keep out Leon Best’s firm header.
And, despite late appeals by the home crowd for a penalty, that ensured the Blues made the trip home with all three points.
Charlton (4-2-3-1): Amos; Solly (c), Konsa, Sarr, Dasilva; Forster-Caskey, Aribo (Reeves 87); Marshall (Best 82), Clarke (Ahearne-Grant 75), Holmes; Magennis
Subs not used: Phillips, Lennon, Pearce, Jackson
Pompey (4-2-3-1): McGee; Thompson, Burgess, Clarke, Haunstrup; O’Keefe, Rose; Evans, Chaplin (Bennett 46), Lowe; Pitman (c)
Goals: Magennis 47 (og)
Booked: Evans, Thompson
Subs not used: Bass, Talbot, Casey, May, Kennedy, Main
Referee: Andrew Madley
Attendance: 16,361 (3,870 Pompey fans)