Swansea City had a Championship return to forget as captain Garry Monk was sent off for a late challenge on Matthew Holland after 69 minutes.
Monk's fortunes were in complete contrast to home skipper Mark Hudson, who headed home in the second minute from Jonjo Selvey's corner.
The visitors had high hopes on their return to this level after 24 years.
But Andy Gray completed the Swans' misery as he headed home Grant Basey's free-kick in the 85th-minute.
Charlton manager Alan Pardew:
Please turn on JavaScript. Media requires JavaScript to play.
"We needed Matt Holland at that stage (1-0 up). He came on and did what he does and his experience got us to the victory.
"They really passed the ball well and at times they embarrassed us."
Swansea City manager Roberto Martinez:
"The goals we conceded were not good enough from our point of view. They were soft.
"We wouldn't have won the title last season if we had defended like that.
"But there are more positives than negatives. The second yellow card (for Garry Monk) was a bad decision."
Charlton: Weaver, Semedo, Fortune, Hudson, Youga, Sam (Bouazza 83), Racon, Shelvey (Holland 56), Jerome Thomas (Basey 78), Gray, Varney. Subs Not Used: Elliot, Dickson.
Goals: Hudson 3, Gray 85.
Swansea: De Vries, Collins, Monk, Williams, Painter, Gower (Scotland 76), Bodde, Britton, Pratley (Jordi Gomez 80), Butler, Bauza (Brandy 64). Subs Not Used: Tate, Fede.
Sent Off: Monk (69).
Booked: Bodde, Monk.
Att: 21,675
Ref: Richard Beeby (Northamptonshire).
What are these?
Bookmark with:
What are these?