A dreadful mistake by Shaka Hislop gifted Charlton victory after Patrik Berger looked to have earned Pompey a point with a sensational strike.
Hislop made a mess of gathering the ball after it glanced off David Unsworth's head following a free-kick.
Earlier, Kevin Lisbie headed against the bar before Jason Euell pounced on a defensive error to put Charlton ahead.
Berger levelled with a stunning effort from just outside the box and Hislop denied Lisbie before his late error.
The Addicks were desperate to make amends for their woeful performance on the opening weekend against Bolton and they were quickly on the attack.
Hislop was forced into a good early save from Jon Fortune's deflected header following a Danny Murphy corner.
Murphy himself showed good technique when the ball fell kindly for him and his half-volley whistled just past the post.
But the visitors should have scored against the run of play after 13 minutes when Kiely made a mess of Yakubu's cross, but Eyal Berkovic took too long to get in a shot which was blocked.
Charlton struggled to force the pace until Lisbie's header from another Murphy cross thumped against the bar and his follow up effort was blocked.
And Euell went one better soon after when he finished superbly with the outside of his right boot following Portsmouth's failure to deal with a Lisbie cross.
Pompey were rocked back on their heels but Unsworth missed a good opportunity seven minutes before the break.
Yakubu crossed to Berger and his shot deflected into the path of the on-rushing Unsworth down the left, but he fired into the side netting.
Kiely then ensured Charlton went in 1-0 up at the break when he saved comfortably from Lomano LuaLua at his near post before superbly denying Berger's fierce drive.
LuaLua played a superb one-two with Yakubu early in the second half and should have done better than blasting his effort over the bar when well placed.
Charlton hit back immediately and Dennis Rommedahl just failed to get on the end of a flick-on from Shaun Bartlett with the goal gaping.
Bartlett came inches away from a second when another superb free-kick from Murphy came off his shoulder.
But Berger stunned the home supporters with a spectacular strike when he flicked the ball up following a free-kick and lashed it into the top right of the net.
Charlton appeared shell-shocked but a fine run down the right by Rommedahl before he was brought down crudely by Unsworth got the home side and their supporters going again.
They would have been in full cry moments later when Lisbie burst into the box, only for Hislop to produce a reaction save.
Charlton pushed Rommedahl up front in a bid to take all three points and the Dane's cross found Bartlett's head but the ball floated harmlessly into Hislop's hands.
The South African was then replaced by Francis Jeffers and almost immediately Hreidarsson put a free header over the bar.
Jeffers then fired just over with his first touch after being played in by Murphy and that looked to be it.
Hislop, who had enjoyed a decent game, undid all his previous good work when Fortune swung in a free-kick and the keeper made a complete mess of it.
Charlton: Kiely, Young, Fish, Fortune, Hreidarsson, Kishishev,
Murphy (Konchesky 83), Euell, Rommedahl (El Karkouri 89),
Lisbie, Bartlett (Jeffers 77).
Subs Not Used: Andersen, Hughes.
Goals: Euell 23, Unsworth 87 og.
Portsmouth: Hislop, Primus (Taylor 45), De Zeeuw, Stefanovic,
Griffin (Curtis 70), Quashie, Berkovic (O'Neil 75), Berger,
Unsworth, LuaLua, Yakubu.
Subs Not Used: Ashdown, Schemmel.
Goals: Berger 53.
Ref: A Wiley (Staffordshire).