Striker David Ngog scored twice within six minutes to inspire Bolton to victory over Charlton.
Addicks striker Danny Haynes had missed two promising chances before his side fell behind after 74 minutes.
Substitute Ngog produced an individual piece of play, beating two defenders and poking the ball past keeper Ben Hamer for Bolton's opener.
The forward then exchanged passes with Kevin Davies before drilling in a shot to secure a victory for the Trotters.
The win was only Bolton's second in eight games, while Charlton suffered a first away defeat since 18 September.
The home side almost took an early lead when Chung-Yong Lee played a neat one-two with Chris Eagles before sending a side-footed shot wide.
At the other end, a Tyrone Mears tackle foiled Haynes just as the Charlton striker was set to shoot when clear through on goal.
The two teams again traded chances when Eagles had an effort saved by keeper Ben Hamer, while Haynes headed wide.
Bolton boss Dougie Freedman brought on Martin Petrov and Ngog, with the two combining before the latter gave the Trotters the lead.
Davies helped set up Ngog for his second and Charlton failed to recover as their seven-match unbeaten run was ended.
Bolton manager Dougie Freedman:
"I felt that the key today was that we had the opportunity to bring the subs on at 0-0.
"David Ngog turns up every day and works very hard on the training ground and that should be the headline, not his goals.
"He's got a great leader to learn off in Kevin Davies and I myself like to think that I can help him make the most of his career."
Charlton boss Chris Powell:
"We were disappointed because we grew into the game and created the better chances.
"In the end, though, we were beaten by a substitute who has a huge pedigree in the game and he has made a huge difference.
"I'm sitting here thinking that we should have won but we'll be looking to go into the Christmas period trying to bounce back from a defeat which shouldn't have happened."
Live Text Commentary
Full Time The referee signals the end of the game.90:00 +3:54
Effort on goal by Dale Stephens from outside the box goes harmlessly over the bar.90:00 +2:50
Kevin Davies challenges Daniel Seaborne unfairly and gives away a free kick. Chris Solly takes the direct free kick.90:00 +2:31
Bradley Wright-Phillips takes a shot. Save made by Adam Bogdan.90:00 +1:39
David Ngog has a shot and went wide right of the post.90:00 +1:05
The referee blows for offside against Martin Petrov. Ben Hamer takes the free kick.89:48
Shot by Martin Petrov. Save by Ben Hamer.87:01
Strike comes in from Chris Eagles from the free kick, Ben Hamer makes a save.87:01 Booking
Booking Lawrie Wilson booked for not retreating ten yards at a set play.85:37
Free kick awarded for an unfair challenge on David Ngog by Dorian Dervite.84:47
Dorian Dervite gives away a free kick for an unfair challenge on Kevin Davies. Chris Eagles crosses the ball in from the free kick, save made by Ben Hamer.83:40
Ben Hamer takes the free kick.83:40 Booking
Booking Stephen Warnock is shown a yellow card.83:21
Foul by Stephen Warnock on Yann Kermorgant, free kick awarded.81:51 Substitution
Substitution (Charlton) makes a substitution, with Jordan Cook coming on for Emmanuel Frimpong.81:51 Substitution
Substitution Bradley Wright-Phillips on for Danny Haynes.80:59
Foul by Daniel Seaborne on Chris Eagles, free kick awarded. Martin Petrov crosses the ball in from the free kick.79:28
Kevin Davies provided the assist for the goal.79:28 Goal scored
Goal! - David Ngog - Bolton 2 - 0 Charlton David Ngog scores a goal from just inside the area to the bottom left corner of the goal. Bolton 2-0 Charlton.79:07
Martin Petrov takes a shot. Save by Ben Hamer.
Volleyed right-footed shot by David Ngog. Save by Ben Hamer.76:33
Effort from inside the area by Kevin Davies misses to the right of the target.76:00
Kevin Davies gives away a free kick for an unfair challenge on Chris Solly. Direct free kick taken by Ben Hamer.74:43
Dale Stephens takes a outswinging corner from the right by-line played to the near post, clearance made by Samuel Ricketts.73:21
The assist for the goal came from Chris Eagles.73:21 Goal scored
Goal! - David Ngog - Bolton 1 - 0 Charlton A goal is scored by David Ngog from deep inside the penalty area to the bottom left corner of the goal. Bolton 1-0 Charlton.72:01
Kevin Davies fouled by Dorian Dervite, the ref awards a free kick. Free kick crossed right-footed by Chris Eagles from left wing, save by Ben Hamer.70:56
Effort from the edge of the area by Chris Eagles goes wide of the right-hand upright.70:24
Lawrie Wilson produces a header from deep inside the six-yard box which goes wide of the right-hand upright.69:40
Inswinging corner taken by Johnnie Jackson from the right by-line, save made by Adam Bogdan.67:25
Danny Haynes takes a shot. Save made by Adam Bogdan.65:45
The referee blows for offside against Yann Kermorgant. Indirect free kick taken by Stephen Warnock.65:25
Shot from 20 yards from David Ngog. Dale Stephens gets a block in.62:17 Substitution
Substitution Martin Petrov on for Chung-Yong Lee.62:17 Substitution
Substitution (Bolton) makes a substitution, with David Ngog coming on for Jacob Butterfield.61:17
Chung-Yong Lee produces a cross, save made by Ben Hamer.59:53
A cross is delivered by Daniel Seaborne.59:22
Outswinging corner taken right-footed by Dale Stephens from the right by-line, clearance by Kevin Davies.58:07
Kevin Davies is flagged offside by the assistant referee. Ben Hamer takes the indirect free kick.57:35
Foul by Yann Kermorgant on Samuel Ricketts, free kick awarded. Free kick taken by Adam Bogdan.56:54
Kevin Davies gives away a free kick for an unfair challenge on Emmanuel Frimpong. Direct free kick taken by Chris Solly.56:07
Foul by Kevin Davies on Michael Morrison, free kick awarded. Ben Hamer takes the direct free kick.54:21
Header from close range by Yann Kermorgant misses to the right of the goal.53:43
Handball decision goes against Jacob Butterfield. Ben Hamer takes the direct free kick.52:14
Danny Haynes challenges Jacob Butterfield unfairly and gives away a free kick. Jacob Butterfield delivers the ball from the free kick left-footed from right channel, save made by Ben Hamer.51:08
Foul by Tyrone Mears on Danny Haynes, free kick awarded. Free kick taken by Lawrie Wilson.50:34
Yann Kermorgant is penalised for handball and concedes a free kick. Free kick taken by Adam Bogdan.48:16
Kevin Davies concedes a free kick for a foul on Emmanuel Frimpong. Free kick taken by Ben Hamer.45:01
The referee starts the second half.45:00 +1:48 Half time
Half Time The match has reached half-time.45:00 +1:23
Corner taken right-footed by Jacob Butterfield from the left by-line to the near post, clearance by Johnnie Jackson.45:00 +0:46
Corner from the right by-line taken by Jacob Butterfield, Johnnie Jackson manages to make a clearance.44:26
Outswinging corner taken left-footed by Johnnie Jackson played to the near post, Keith Andrews manages to make a clearance.42:43
Jacob Butterfield takes a shot. Save by Ben Hamer.41:49
Kevin Davies gives away a free kick for an unfair challenge on Johnnie Jackson. Ben Hamer takes the free kick.40:24
Shot by Chris Eagles. Dorian Dervite gets a block in.40:01
Johnnie Jackson has an effort at goal. Save made by Adam Bogdan.37:42
Free kick awarded for a foul by Dorian Dervite on Kevin Davies. Keith Andrews restarts play with the free kick.36:26
Johnnie Jackson gives away a free kick for an unfair challenge on Keith Andrews. Chris Eagles takes the direct free kick.35:54
Headed effort from close range by Danny Haynes goes wide left of the goal.34:26
Centre by Johnnie Jackson, Samuel Ricketts makes a clearance.34:01
Inswinging corner taken by Johnnie Jackson from the right by-line.32:37
Chris Eagles challenges Lawrie Wilson unfairly and gives away a free kick. Ben Hamer takes the free kick.30:07
Outswinging corner taken by Jacob Butterfield, Chris Eagles takes a shot. Ben Hamer makes a save.29:44
Chris Eagles takes a shot. Blocked by Dale Stephens.25:42
Danny Haynes takes a shot. Blocked by Samuel Ricketts.22:12
Dale Stephens takes a corner.20:26
Foul by Jay Spearing on Yann Kermorgant, free kick awarded. Daniel Seaborne restarts play with the free kick.20:04
Shot by Jacob Butterfield from 35 yards. Johnnie Jackson gets a block in.15:32
Corner taken by Dale Stephens, clearance by Keith Andrews.15:02
Inswinging corner taken left-footed by Johnnie Jackson from the right by-line, clearance made by Zat Knight.9:06
Effort on goal by Chung-Yong Lee from inside the penalty box misses to the right of the target.7:12
Chris Eagles is ruled offside. Ben Hamer takes the free kick.5:13
Tyrone Mears takes the free kick.5:13 Booking
Booking The referee shows Dale Stephens a yellow card.4:45
Jacob Butterfield fouled by Dale Stephens, the ref awards a free kick.0:00
The ref blows the whistle to start the match.
Live data and text provided by our data suppliers