There was a huge moment of controversy when Conor Washington opened the scoring, with the officials missing a clear offside in the build-up.
And when Clark Robertson inadvertently found his own net after the break, it looked as though the Addicks’ points were secure.
But Michael Jacobs came off the bench to reduce the deficit and the Blues threw everything at their visitors before time ran out.
Danny Cowley made three changes from the side that were narrowly beaten at Sunderland in the last outing.
Denver Hume was handed his debut wide on the left, while there were also starts for Shaun Williams and George Hirst.
There were home bows for Tyler Walker and Hayden Carter, with deadline day capture Aiden O’Brien watching from the directors’ box.
Reeco Hackett, Louis Thompson and Ronan Curtis dropped to the bench and were joined by new keeper Ollie Webber.
Former Fratton favourite Craig MagGillivray started for the visitors, who had Stephen Henderson and Jason Pearce among their substitutes.
There was a minute’s applause before kick-off to remember former Blues left-back Jamie Vincent, who tragically passed away recently at the age of 46.
When the action started, Pompey looked bright and a ball over the top from Sean Raggett saw the crowd rise to their feet.
Hume just about beat Hirst to get a shot away and sent a low effort creeping agonisingly wide of the post.
It was certainly a lively start for the wing-back, who soon provided a fine delivery that Mahlon Romeo could only turn over at the far post.
Then, when a free-kick from Williams was only partially cleared, Joe Morrell thumped a shot just off target.
And some nice build-up play ended with the bright Morrell sweeping the ball right into the mixer, but Hirst could not make a connection.
There was a warning for the hosts midway through the first half, however, as Corey Blackett-Taylor surged half the length of the pitch before narrowly clearing the crossbar.
Charlton did break the deadlock on 31 minutes, but it was a goal that should never have been allowed to stand.
Chuks Aneke was clearly offside when he met an Adam Matthews cross, but the assistant referee kept his flag down.
Gavin Bazunu made a fine save to deny the striker, only for Washington to follow up and find the net from close range.
The visitors might have doubled their advantage soon after, but Alex Gilbey’s strike rattled the woodwork from a tight angle.
Charlton Athletic 1
There was a slow start to proceedings once the action restarted, but Pompey came close to levelling on 56 minutes.
Williams lifted the ball into the box, where it was nodded on by Hirst for skipper Robertson, who could only poke wide.
But the Addicks looked threatening on the break and one quick move up the pitch ended with Blackett-Taylor angling a shot over.
A pass from Morrell then sent Hirst charging into the box, only for a perfectly-timed Ryan Inniss challenge to deny him.
The Blues were left with a mountain to climb when their opponents doubled their lead just past the hour mark.
It was a fine cross into the box from Sean Clare on the right and in his attempt to deal with it, Robertson headed into his own net.
There was ironic applause at the other end when Romeo’s deflected shot finally forced MacGillivray into action, albeit with a regulation stop.
Cowley replaced Walker and Williams with Curtis and Thompson on 71 minutes, while Carter made way for Jacobs soon after.
And it was JACOBS who provided some hope when he collected Curtis’ pass and took a couple of neat touches before hitting a shot that was fumbled over the line by MacGillivray.
A quick counter almost led to a leveller, with Morrell feeding Curtis and the forward’s low shot fizzing just past the post.
There were farcical scenes when Aneke – booked for time wasting seconds earlier – then had to be dragged to his feet by Morrell.
The visitors took an age in bringing the striker off, which resulted in referee Neil Hair showing a yellow card to manager Johnnie Jackson.
Pompey were pushing for a leveller and a dangerous Jacobs free-kick somehow evaded everyone as it flew out of play.
Hirst then did well to lay the ball off for Thompson, with the substitute’s shot saved low down by MacGillivray.
A Raggett header in stoppage-time then ricocheted into the keeper’s arms, as the Blues’ ultimately fell just short.
Pompey (3-4-1-2): Bazunu; Carter (Jacobs 72), Raggett, Robertson (c); Romeo, Morrell, Williams (Thompson 71), Hume; Harness; Hirst, Walker (Curtis 71)
Goals: Jacobs 79
Subs not used: Webber, Freeman, Ogilvie, Hackett
Charlton (3-5-2): MacGillivray; Clare, Inniss (c) (Pearce 70), Famewo; Matthews, Gilbey, Dobson, Morgan, Blackett-Taylor (Purrington 87); Aneke (Leko 87), Washington
Goals: Washington 31, Robertson 64 (og)
Booked: Famewo, Aneke, Dobson, Leko
Subs not used: Henderson, Watson, Jaiyesimi, Lee
Referee: Neil Hair
Attendance: 15,326 (1,230 away fans)