Yann Kermorgant completed a stunning Charlton fightback as nine-man Bolton's play-off ambitions suffered a blow.
Marvin Sordell fired the Trotters ahead before Medo Kamara doubled the lead.
Johnnie Jackson launched Charlton's comeback with an excellent finish before Bolton lost Sam Ricketts to a second yellow card, Dorian Dervite equalising from close range.
Bolton's meltdown was complete when Craig Davies was sent off after Kermorgant's winner from the spot.
Sam Ricketts' red card woe
The former Swansea and Hull player's previous sending-off was in Bolton's 4-0 Premier League defeat at Sunderland on 9 March 2010
French forward Kermorgant made no mistake after Ricardo Fuller was brought down by Darren Pratley.
Bolton have now lost back-to-back games having won their previous five matches, with Dougie Freedman's side six points off the top six with seven games remaining.
This was Charlton's first home Championship win since 12 January and keeps the London club out of immediate trouble near the bottom of the table.
Bolton started well and took a fourth-minute lead when Sordell collected David Ngog's pass and turned makeshift centre-half Dervite before tucking the ball past Ben Hamer.
They doubled their advantage in the 20th minute when Ngog found Kamara 25 yards out and the Sierra Leone midfielder beat Hamer with a swerving drive which went in off the post.
In an exciting game, Charlton grabbed a lifeline when Bolton cleared a corner only as far as Jackson on the edge of the area. The midfielder took the ball past two defenders before rifling it low into the net.
And the game swung Charlton's way on the hour when Ricketts was shown a second yellow card for a foul on Fuller.
Kermorgant's curler, from the resulting free-kick, came back off the post and Dervite reacted first to fire his first goal for the club.
And Charlton's fine comeback win was complete when Kermorgant netted from the spot after Pratley upended Fuller.
Substitute Davies was then sent off for two bookings as Bolton's afternoon went from bad to worse.
Charlton manager Chris Powell:
Regardless of the sending off it showed the mental strength of the players.
"To drag themselves up from that, the momentum went in our favour - Johnnie Jackson was immense.
"We took advantage of the sending off, and the crowd got behind us."
Bolton manager Dougie Freedman:
"The sendings-off were difficult to take because I don't think Ricketts' first caution was one.
"The referee is only part-time and it's difficult for him to keep the intensity.
"But we put the referee in a position where he had to make the decisions."
- 01 Hamer
- 05 Morrison
- 16 Wiggins
- 20 Solly Booked
- 44 Dervite
- 02 Hughes Booked (Gower - 72' )
- 04 Jackson
- 14 Pritchard
- 32 Harriotts (Wilson - 86' )
- 18 Kermorgant Booked
- 19 Fuller (Haynes - 86' )
- 27 Button
- 29 Feely
- 07 Green
- 21 Gower
- 23 Wilson
- 09 Haynes
- 26 Obika
- 24 Lonergan
- 03 Alonso
- 12 Knight
- 15 Dawson Booked
- 18 Ricketts Dismissed after an earlier booking
- 20 Spearing Booked
- 21 Pratley (Odelusi - 82' )
- 27 Lee (C Davies - 69' Dismissed after an earlier booking )
- 44 Medo
- 09 Ngog
- 19 Sordell (Butterfield - 59' )
- 01 Bogdan
- 31 Wheater
- 43 Butterfield
- 07 Eagles
- 14 K Davies
- 28 C Davies
- 38 Odelusi