Middlesbrough climbed up to second in the Championship after recovering from going a goal down to win at Charlton.
Rob Hulse opened the scoring for the hosts with a goal from the edge of the area, before Boro defender Jonathan Woodgate headed in an equaliser.
In-form Scott McDonald ran clear to score the visitors' second and a fine chipped finish by Emmanuel Ledesma put Middlesbrough in control.
Substitute Richard Smallwood slid in late on to complete the scoring.
Free-scoring Scott McDonald
Scott McDonald has scored five goals in only six appearances for Middlesbrough this season
Charlton have struggled at The Valley this season, and when Hulse fired beyond Jason Steele in the 12th minute, it was the first goal they had scored at home since the opening game of the campaign.
Chris Powell's side pushed forward in a bid to score a second, but instead it was Middlesbrough who equalised just before the half-hour.
Grant Leadbitter sent an inviting free-kick into the box and the unmarked Woodgate rose to direct a header into the net.
McDonald has been in dangerous form lately and he scored his fourth goal in three games eight minutes into the second half, racing through on goal before firing home from 12 yards.
The visitors scored again just after the hour mark as Steele launched the ball up the field for McDonald, who knocked it on to Ledesma and he smartly lobbed Ben Hamer from outside the area.
Lukas Jutkiewicz hit the post before Smallwood wrapped up the victory with a fourth for his side in the 90th minute.
Charlton manager Chris Powell: "We got hurt by a couple of individual mistakes in the first half then we were chasing the game in the second half.
"The scoreline doesn't really reflect what went on but they punished us in front of the goal.
"You want to perform at home, but also I think we can do better - there's more to come from the players but we haven't done that at home."
Middlesbrough manager Tony Mowbray: "We got confidence by coming from behind against Bolton last week and I thought we finished the game really strongly but it was a bit harsh on Charlton.
"As we know from last season, when you don't win at home for a time it becomes more difficult - the team feel that.
"We've got stronger in depth, when you consider we've got half a team not playing, and when you think last year we won two of our last 12 and missed out on the play-offs. We can't count our chickens."
- 01 Hamer
- 05 Morrison
- 20 Solly
- 23 Wilson (Stephens - 46' )
- 28 Cort (Haynes - 76' )
- 04 Jackson
- 12 Kerkar
- 14 Pritchard Booked
- 44 Dervite
- 10 Wright-Phillips (Cook - 75' )
- 29 Hulse
- 27 Button
- 06 Taylor
- 07 Green
- 08 Stephens
- 17 Cook
- 22 Hollands
- 09 Haynes
- 01 Steele
- 03 Amougou
- 04 Friend Booked
- 21 Parnaby
- 39 Woodgate Booked
- 07 Leadbitter
- 10 Bailey
- 11 Ledesma (Jutkiew'z - 66' )
- 16 McEachran (Smallwood - 90' )
- 27 McDonald
- 38 Haroun (Hoyte - 90' )
- 32 Leutwiler
- 02 Hoyte
- 25 Reach
- 05 Zemmama
- 18 Halliday
- 33 Smallwood
- 17 Jutkiew'z
Live Text Commentary
Full Time The referee blows his whistle to end the game.90:00 +3:50
Justin Hoyte produces a right-footed shot from deep inside the penalty area which goes wide of the right-hand post.90:00 +2:31
Grant Leadbitter provided the assist for the goal.90:00 +2:31 Goal scored
Goal! - Richard Smallwood - Charlton 1 - 4 Middlesbro Goal scored by Richard Smallwood from deep inside the penalty area to the bottom left corner of the goal. Charlton 1-4 Middlesbrough.90:00 +2:12
Lukas Jutkiewicz takes a shot. Save by Ben Hamer.90:00 +1:38
Grant Leadbitter takes a short corner.90:00 +1:11
Grant Leadbitter takes a short corner.89:13 Substitution
Substitution Richard Smallwood replaces Josh McEachran.89:13 Substitution
Substitution Justin Hoyte on for Faris Haroun.89:13
Dorian Dervite gives away a free kick for an unfair challenge on Lukas Jutkiewicz. Andre Bikey takes the direct free kick.85:23
Inswinging corner taken left-footed by Johnnie Jackson, clearance made by Jason Steele.84:21
Josh McEachran takes a short corner.83:20
Lukas Jutkiewicz produces a right-footed shot from deep inside the area and strikes the post.82:27
Inswinging corner taken by Johnnie Jackson, clearance made by Jonathan Woodgate.80:20
The ball is sent over by Danny Haynes.79:06
The ball is sent over by Salim Kerkar.75:02 Substitution
Substitution Leon Cort leaves the field to be replaced by Danny Haynes.74:24 Substitution
Substitution Jordan Cook replaces Bradley Wright-Phillips.72:04 Booking
Booking Booking for Bradley Pritchard for dissent.71:28
Corner taken by Johnnie Jackson from the left by-line, clearance made by Andre Bikey.
Scott McDonald takes a shot. Save made by Ben Hamer.68:11
Salim Kerkar crosses the ball.67:07
Bradley Pritchard concedes a free kick for a foul on Josh McEachran. Andre Bikey restarts play with the free kick.65:59
Unfair challenge on Dorian Dervite by Lukas Jutkiewicz results in a free kick. Free kick taken by Ben Hamer.65:16 Substitution
Substitution Lukas Jutkiewicz on for Emmanuel Ledesma.64:09
Johnnie Jackson produces a left-footed shot from deep inside the penalty area which goes wide of the right-hand post.62:17
The assist for the goal came from Jason Steele.62:17 Goal scored
Goal! - Emmanuel Ledesma - Charlton 1 - 3 Middlesbro Emmanuel Ledesma scores a goal from just outside the area to the bottom left corner of the goal. Charlton 1-3 Middlesbrough.60:51
Bradley Wright-Phillips takes a shot. Save by Jason Steele.58:58
Robert Hulse gives away a free kick for an unfair challenge on Andre Bikey. Direct free kick taken by Andre Bikey.56:30
Inswinging corner taken by Emmanuel Ledesma from the right by-line.55:39
The referee gives a free kick against Bradley Pritchard for handball. Direct free kick taken by Jason Steele.54:05
Robert Hulse fouled by George Friend, the ref awards a free kick. Chris Solly crosses the ball from the free kick right-footed from right channel, clearance by Jonathan Woodgate.52:39
Josh McEachran provided the assist for the goal.52:39 Goal scored
Goal! - Scott McDonald - Charlton 1 - 2 Middlesbro Scott McDonald grabs a goal from inside the penalty area to the bottom left corner of the goal. Charlton 1-2 Middlesbrough.51:29
Corner taken left-footed by Johnnie Jackson from the right by-line to the near post, clearance by Nicky Bailey.49:00
Free kick awarded for an unfair challenge on Andre Bikey by Robert Hulse. Jason Steele restarts play with the free kick.47:59
Faris Haroun takes a shot. Save by Ben Hamer.47:12
Free kick awarded for a foul by Faris Haroun on Bradley Pritchard. Direct free kick taken by Ben Hamer.46:00
George Friend fouled by Bradley Pritchard, the ref awards a free kick. Direct free kick taken by Josh McEachran.45:01
The second half kicks off.45:01 Substitution
Substitution Lawrie Wilson goes off and Dale Stephens comes on.45:00 +1:48 Half time
Half Time The ref blows to end the first period.45:00 +0:21
Foul by Nicky Bailey on Salim Kerkar, free kick awarded. Ben Hamer takes the free kick.43:01
Corner taken left-footed by Emmanuel Ledesma, save by Ben Hamer.39:54
Johnnie Jackson shoots direct from the free kick.39:54 Booking
Booking The referee books Jonathan Woodgate for persistent infringement.39:34
Jonathan Woodgate is penalised for a handball.38:13
A cross is delivered by Johnnie Jackson, Headed effort from deep inside the penalty area by Michael Morrison misses to the left of the goal.38:13 Booking
Booking Caution for George Friend.38:01
Foul by George Friend on Lawrie Wilson, free kick awarded.36:42
Robert Hulse is ruled offside. Indirect free kick taken by Jason Steele.36:14
Header on goal by Robert Hulse from inside the box goes harmlessly over the target.35:06
Free kick awarded for a foul by Jonathan Woodgate on Ben Hamer. Ben Hamer takes the direct free kick.34:41
Inswinging corner taken by Emmanuel Ledesma, clearance by Ben Hamer.32:53
Corner taken by Emmanuel Ledesma from the right by-line, clearance made by Ben Hamer.31:59
Johnnie Jackson produces a left-footed shot from outside the penalty box and misses left.29:36
Free kick awarded for a foul by Bradley Wright-Phillips on Andre Bikey. Direct free kick taken by Jason Steele.28:16
Faris Haroun challenges Salim Kerkar unfairly and gives away a free kick. Free kick crossed left-footed by Johnnie Jackson from left channel, save by Jason Steele.26:58
Scott McDonald challenges Bradley Pritchard unfairly and gives away a free kick. Free kick crossed right-footed by Chris Solly from right channel.26:03
Assist by Grant Leadbitter.26:03 Goal scored
Goal! - Jonathan Woodgate - Charlton 1 - 1 Middlesbro Jonathan Woodgate grabs a headed goal from inside the penalty box. Charlton 1-1 Middlesbrough.25:28
Free kick awarded for a foul by Dorian Dervite on Emmanuel Ledesma. A cross is delivered by Grant Leadbitter,24:36
The ball is delivered by Nicky Bailey.23:26
Effort from outside the penalty area by Faris Haroun goes wide left of the goal.22:29
Faris Haroun sends in a cross.20:40
Free kick awarded for a foul by Grant Leadbitter on Bradley Pritchard. Ben Hamer takes the free kick.19:16
Nicky Bailey takes a shot. Ben Hamer makes a save.16:44
The official flags Scott McDonald offside. Ben Hamer takes the free kick.15:48
Outswinging corner taken left-footed by Johnnie Jackson, clearance made by Jonathan Woodgate.15:08
Corner taken left-footed by Johnnie Jackson from the right by-line to the near post, clearance by Jason Steele.13:35
Andre Bikey challenges Bradley Wright-Phillips unfairly and gives away a free kick. Free kick crossed by Johnnie Jackson, Andre Bikey makes a clearance.11:38
Bradley Pritchard provided the assist for the goal.11:38 Goal scored
Goal! - Robert Hulse - Charlton 1 - 0 Middlesbro Goal scored by Robert Hulse from just outside the penalty box to the bottom left corner of the goal. Charlton 1-0 Middlesbrough.9:22
The referee blows for offside against Scott McDonald. Free kick taken by Ben Hamer.7:51
Emmanuel Ledesma takes a shot from long distance which goes wide of the right-hand post.6:13
Salim Kerkar fouled by Grant Leadbitter, the ref awards a free kick. Ben Hamer takes the direct free kick.0:47
Bradley Pritchard produces a header from inside the area that goes over the crossbar.0:02
Free kick awarded for a foul by Bradley Pritchard on Faris Haroun. Direct free kick taken by Grant Leadbitter.0:00
The referee starts the match.
Live data and text provided by our data suppliers