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."
Live Text Commentary
Full Time The referee brings the game to a close.90:00 +7:29 Booking
Booking Jay Spearing booked.90:00 +7:08 Dismissal
Dismissal Craig Davies is sent off by the referee for second bookable offence.90:00 +6:27
Craig Davies concedes a for a foul on Bradley Pritchard.90:00 +6:17
The ball is swung over by Danny Butterfield, clearance made by Michael Morrison.90:00 +6:10
Danny Butterfield delivers the ball, Dorian Dervite manages to make a clearance.90:00 +5:07
Mohamed Medo takes a shot. Ben Hamer makes a save.90:00 +4:20
Ben Hamer restarts play with the free kick.90:00 +4:20 Booking
Booking Booking for Craig Davies for dissent.90:00 +3:46
The ball is swung over by Danny Butterfield, Craig Dawson takes a shot. Michael Morrison manages to make a clearance. Michael Morrison fouled by Sanmi Odelusi, the ref awards a free kick.90:00 +1:36
Danny Butterfield sends in a cross.90:00 +0:55
Corner taken right-footed by Mark Gower, Andy Lonergan makes a save.90:00 +0:49 Booking
Booking Yann Kermorgant is shown a yellow card for unsporting behaviour.90:00 +0:21
Header on goal by Yann Kermorgant from inside the box goes harmlessly over the target.89:43
The ball is delivered by Danny Butterfield, clearance by Michael Morrison.87:03
Free kick taken by Marcos Alonso.87:03 Booking
Booking Chris Solly is shown a yellow card.86:52
David Ngog fouled by Chris Solly, the ref awards a free kick.85:10
Ben Hamer takes the free kick.85:10 Substitution
Substitution Ricardo Fuller goes off and Danny Haynes comes on.
Substitution Lawrie Wilson replaces Callum Harriott.85:10
Free kick awarded for a foul by Craig Davies on Ben Hamer.83:16
Craig Dawson gives away a free kick for an unfair challenge on Bradley Pritchard. Bradley Pritchard takes the direct free kick.81:32 Substitution
Substitution Sanmi Odelusi on for Darren Pratley.79:03
Marcos Alonso fouled by Bradley Pritchard, the ref awards a free kick. Andy Lonergan takes the direct free kick.77:09
Bradley Pritchard crosses the ball.76:26
The ball is crossed by Rhoys Wiggins, Zat Knight manages to make a clearance.75:34
Marcos Alonso takes a shot. Save made by Ben Hamer.73:17
Unfair challenge on Michael Morrison by Craig Davies results in a free kick. Direct free kick taken by Ben Hamer.72:59
Johnnie Jackson gives away a free kick for an unfair challenge on Jay Spearing. Direct free kick taken by Jay Spearing.71:09 Substitution
Substitution Mark Gower on for Andy Hughes.69:18
Yann Kermorgant takes a shot. Blocked by Zat Knight. Outswinging corner taken by Callum Harriott, Zat Knight makes a clearance.68:31 Substitution
Substitution (Bolton) makes a substitution, with Craig Davies coming on for Chung-Yong Lee.67:26
Marcos Alonso sends in a cross.62:47 Goal scored
Goal! - Yann Kermorgant - Charlton 3 - 2 Bolton Power penalty scored by Yann Kermorgant. Charlton 3-2 Bolton.61:33
Darren Pratley challenges Ricardo Fuller unfairly and gives away a Penalty.59:32
Assist by Yann Kermorgant.59:32 Goal scored
Goal! - Dorian Dervite - Charlton 2 - 2 Bolton Dorian Dervite scores a goal from inside the six-yard box to the bottom left corner of the goal. Charlton 2-2 Bolton.57:16
Yann Kermorgant takes a shot.57:16 Substitution
Substitution Danny Butterfield joins the action as a substitute, replacing Marvin Sordell.57:16 Dismissal
Dismissal Samuel Ricketts dismissed for serious foul play.57:09 Booking
Booking Craig Dawson goes into the book.56:51
Craig Dawson gives away a free kick for an unfair challenge on Ricardo Fuller.56:03
Callum Harriott produces a right-footed shot from long distance which goes wide right of the goal.51:41
Mohamed Medo produces a right-footed shot from just outside the box that goes wide right of the goal.49:38
Ricardo Fuller takes a shot. Save by Andy Lonergan.48:27
The ball is sent over by Ricardo Fuller, Headed effort on goal by Bradley Pritchard from inside the penalty box misses to the right of the target.47:01
Callum Harriott takes a shot. Save made by Andy Lonergan. Corner taken right-footed by Jay Spearing from the left by-line, clearance by Chris Solly.45:34
Chris Solly concedes a free kick for a foul on Jay Spearing. Direct free kick taken by Marcos Alonso.45:01
The referee gets the second half started.45:00 +2:38 Half time
Half Time The referee calls an end to the first half.45:00 +1:07
Direct free kick taken by Marcos Alonso.45:00 +1:07 Booking
Booking Andy Hughes is shown a yellow card.45:00 +0:47
Free kick awarded for a foul by Andy Hughes on Mohamed Medo.44:28
Corner taken by Chris Solly from the right by-line played to the near post, clearance made by Zat Knight.43:46
Unfair challenge on Michael Morrison by David Ngog results in a free kick. Free kick taken by Ben Hamer.43:03
Marvin Sordell fouled by Callum Harriott, the ref awards a free kick. Samuel Ricketts takes the free kick.41:34
Johnnie Jackson takes the direct free kick. Chris Solly takes a shot. Darren Pratley gets a block in. Chris Solly takes the inswinging corner, clearance by Jay Spearing.41:34 Booking
Booking Samuel Ricketts is shown a yellow card.41:22
Free kick awarded for an unfair challenge on Callum Harriott by Samuel Ricketts.40:37
Unfair challenge on Chris Solly by Darren Pratley results in a free kick. Ben Hamer takes the direct free kick.39:56
Mohamed Medo fouled by Andy Hughes, the ref awards a free kick. Direct free kick taken by Samuel Ricketts.38:35
Andy Hughes produces a right-footed shot from just outside the penalty box that misses to the left of the goal.37:42
Free kick awarded for a foul by Marcos Alonso on Ricardo Fuller. Ben Hamer restarts play with the free kick.36:38
Darren Pratley concedes a free kick for a foul on Rhoys Wiggins. Free kick taken by Ben Hamer.35:24
Shot from outside the box by Johnnie Jackson misses to the left of the target.31:51
The ball is swung over by Callum Harriott, Craig Dawson makes a clearance.30:23
Unfair challenge on Samuel Ricketts by Callum Harriott results in a free kick. Free kick taken by Zat Knight.29:30
Unfair challenge on Mohamed Medo by Johnnie Jackson results in a free kick. Zat Knight restarts play with the free kick.28:41
Rhoys Wiggins takes a shot. Darren Pratley gets a block in.28:18
Callum Harriott takes a shot. Save by Andy Lonergan.27:18
Unfair challenge on Chris Solly by Mohamed Medo results in a free kick. Johnnie Jackson restarts play with the free kick.26:43
David Ngog takes a shot. Rhoys Wiggins gets a block in.25:55
Callum Harriott takes a shot. Blocked by Zat Knight.24:33 Goal scored
Goal! - Johnnie Jackson - Charlton 1 - 2 Bolton Johnnie Jackson grabs a goal from just inside the area to the bottom left corner of the goal. Charlton 1-2 Bolton.23:46
Johnnie Jackson takes a shot. Zat Knight gets a block in. Outswinging corner taken by Johnnie Jackson, David Ngog manages to make a clearance.23:14
Marcos Alonso challenges Yann Kermorgant unfairly and gives away a free kick. Chris Solly takes the free kick.22:08
The ball is sent over by Callum Harriott, clearance by Marcos Alonso.20:54
Free kick awarded for an unfair challenge on Marcos Alonso by Yann Kermorgant. Direct free kick taken by Marcos Alonso.20:09
Callum Harriott sends in a cross, Andy Lonergan makes a save.20:02
The ball is swung over by Callum Harriott.19:08 Goal scored
Goal! - Mohamed Medo - Charlton 0 - 2 Bolton Mohamed Medo finds the back of the net with a goal from long range to the bottom left corner of the goal. Charlton 0-2 Bolton.18:54
David Ngog takes a shot. Dorian Dervite gets a block in.17:29
Free kick awarded for an unfair challenge on Marvin Sordell by Michael Morrison. Direct free kick taken by Darren Pratley. The ball is delivered by Chung-Yong Lee, clearance by Dorian Dervite.16:12
Unfair challenge on Chung-Yong Lee by Ricardo Fuller results in a free kick. Andy Lonergan takes the direct free kick.9:13
Bradley Pritchard takes a shot. Andy Lonergan makes a save. Callum Harriott takes a short corner.7:36
Bradley Pritchard takes a shot. Save made by Andy Lonergan. Outswinging corner taken from the left by-line by Callum Harriott, Zat Knight makes a clearance. Callum Harriott takes the outswinging corner, clearance by Zat Knight.7:17
The ball is sent over by Callum Harriott, Zat Knight manages to make a clearance.6:56
The ball is swung over by Marcos Alonso, clearance made by Dorian Dervite.3:36
David Ngog provided the assist for the goal.3:36 Goal scored
Goal! - Marvin Sordell - Charlton 0 - 1 Bolton A goal is scored by Marvin Sordell from deep inside the penalty box to the bottom right corner of the goal. Charlton 0-1 Bolton.2:53
David Ngog takes a shot. Save by Ben Hamer.1:16
Marcos Alonso produces a right-footed shot from just outside the box that misses to the right of the net.0:36
Centre by Marcos Alonso. Jay Spearing takes the inswinging corner, clearance made by Callum Harriott.0:00
The ref blows the whistle to begin the match.
Live data and text provided by our data suppliers