Bristol City lost for a club record-equalling seventh successive game and stayed bottom of the Championship thanks to a home defeat by Charlton.
The visitors went ahead in the 20th minute when Danny Haynes tapped home after Dale Stephens's long shot had hit both posts.
Charlton added a second 11 minutes into the second half as Michael Morrison slotted the ball into the net.
The Addicks climb to 16th while City are four points adrift of safety.
City's unwanted record
Bristol City's defeat means they equal the club record of seven successive league defeats, suffered on three previous occasions. The last seven-match losing run came in 2005.
The home side went into the game looking to record a first league victory since 18 September and bring an end to an alarming run of form.
They had the first chance of the game when Albert Adomah's low cross found Martyn Woolford at the back post, but the midfielder's effort was blocked.
But after that early chance it was Charlton who generally looked the more likely to open the scoring and they did just that midway through the first half.
Stephens's shot from distance struck one post and then the other but the loose ball fell kindly for Haynes, who made no mistake from close range.
City had a great chance to equalise before half time when a cross found Sam Baldock unmarked inside the Charlton area, but he scuffed his shot straight at keeper Ben Hamer.
Haynes twice spurned good chances for Charlton after the break, while Stephens saw a 30-yard effort tipped over by City keeper Tom Heaton.
But they were not to be denied a second in the 56th minute when Morrison showed good instincts inside the box to fire home from eight yards.
City poured forward late on but a goal for Derek McInnes's side was not forthcoming as they failed to score for the third successive game.
Bristol City assistant manager Tony Docherty:
"We are not worried about the future because we believe in the players.
"The club was in a worse position when we took over last season and we battled our way out of it. That will happen again.
"The powers that be at the club have indicated they are behind us and there is no harder working manager than Derek so I am convinced we will turn things around."
Charlton boss Chris Powell:
"It was the complete performance as far as we were concerned. It's the first time this season we have been able to say that.
"The midweek victory over Cardiff gave us confidence and today we defended solidly when we had to, as well as causing problems going forward.
"City were desperate for the points themselves so I am thrilled we competed so well. It is a result and a performance to build on."
Live Text Commentary
Full Time The referee ends the match.90:00 +1:37
Free kick awarded for an unfair challenge on Ricardo Fuller by Liam Fontaine. Dale Stephens takes the free kick.89:53 Substitution
Substitution Matthew Taylor comes on in place of Salim Kerkar.89:53
Free kick awarded for an unfair challenge on Jon Stead by Leon Cort. Albert Adomah delivers the ball from the free kick right-footed from left wing. The assistant referee signals for offside against Steven Davies. Indirect free kick taken by Ben Hamer.88:50
Free kick awarded for an unfair challenge on Salim Kerkar by Albert Adomah. Direct free kick taken by Ben Hamer.85:14 Substitution
Substitution (Charlton) makes a substitution, with Ricardo Fuller coming on for Robert Hulse.85:14
The offside flag is raised against James Wilson. Indirect free kick taken by Ben Hamer.84:40
Corner taken by Steven Davies from the right by-line played to the near post, Johnnie Jackson manages to make a clearance.82:36
Steven Davies produces a right-footed shot from a long way out which goes wide right of the goal.80:14
Marvin Elliott concedes a free kick for a foul on Robert Hulse. Johnnie Jackson has a direct shot on goal from the free kick.77:15 Substitution
Substitution Dorian Dervite on for Danny Haynes.77:15
Jon Stead has a shot on goal from outside the area which misses right.76:09
Corner taken by Albert Adomah from the left by-line to the near post, clearance made by Johnnie Jackson.75:31
Corner taken by Steven Davies played to the near post, clearance made by Robert Hulse.73:18
Foul by Steven Davies on Ben Hamer, free kick awarded. Ben Hamer takes the free kick.71:24
Unfair challenge on Matthew Briggs by Bradley Pritchard results in a free kick. Free kick crossed right-footed by Steven Davies, save by Ben Hamer.70:19
Header on goal by Albert Adomah from inside the box goes harmlessly over the target.69:10 Substitution
Substitution (Bristol City) makes a substitution, with Stephen Pearson coming on for Neil Kilkenny.69:10
Marvin Elliott fouled by Johnnie Jackson, the ref awards a free kick. Free kick taken by Liam Fontaine.66:40
The ball is sent over by Albert Adomah.
The referee blows for offside. James Wilson restarts play with the free kick.63:38
Foul by Liam Fontaine on Salim Kerkar, free kick awarded. The free kick is delivered right-footed by Daniel Seaborne from left channel, Martyn Woolford manages to make a clearance.62:00
Shot from just outside the box by Jon Stead goes over the crossbar.61:00
Foul by Martyn Woolford on Salim Kerkar, free kick awarded. Johnnie Jackson delivers the ball from the free kick left-footed from left channel, clearance by Jon Stead.60:17
Bradley Pritchard takes a shot. Save by Tom Heaton.55:58 Substitution
Substitution Jon Stead is brought on as a substitute for Ryan Taylor.55:58 Substitution
Substitution Steven Davies on for Sam Baldock.55:58 Goal scored
Goal! - Michael Morrison - Bristol C 0 - 2 Charlton Michael Morrison scores a goal from deep inside the penalty area to the bottom left corner of the goal. Bristol City 0-2 Charlton.55:07
Dale Stephens takes a shot. Save made by Tom Heaton. Johnnie Jackson takes the inswinging corner, save made by Tom Heaton.54:38
Daniel Seaborne is penalised for handball and concedes a free kick. Neil Kilkenny takes the direct free kick.53:59
Effort on goal by Sam Baldock from just outside the penalty area goes harmlessly over the target.52:59
Neil Kilkenny concedes a free kick for a foul on Robert Hulse. Salim Kerkar takes the free kick.51:00
The ball is crossed by Ryan Taylor.50:07
Albert Adomah fouled by Johnnie Jackson, the ref awards a free kick. Direct free kick taken by Marvin Elliott.48:49
Martyn Woolford takes a shot. Blocked by Salim Kerkar. Inswinging corner taken right-footed by Albert Adomah played to the near post, clearance made by Leon Cort.47:38
Effort on goal by Danny Haynes from inside the box misses to the right of the target.45:01
The match restarts for the second half.45:00 +1:08 Half time
Half Time The first half comes to an end.44:48
Inswinging corner taken right-footed by Albert Adomah, save made by Ben Hamer.43:20
Danny Haynes handles the ball and concedes a free kick. Indirect free kick taken by Tom Heaton.42:52
Martyn Woolford sends in a cross, comfortable save by Ben Hamer.41:02
The ball is delivered by Chris Solly, Effort on goal by Danny Haynes from inside the penalty area goes harmlessly over the bar.40:01
The referee gives a free kick against Salim Kerkar for handball. Tom Heaton takes the free kick.36:51
Matthew Briggs challenges Bradley Pritchard unfairly and gives away a free kick. Johnnie Jackson delivers the ball, Leon Cort takes a shot. Matthew Briggs gets a block in. Johnnie Jackson takes a inswinging corner from the right by-line played to the near post, free kick awarded for an unfair challenge on James Wilson by Leon Cort. Tom Heaton takes the free kick.36:36
Richard Foster crosses the ball, Ben Hamer makes a save.34:59
Albert Adomah produces a cross, Effort on goal by Marvin Elliott from deep inside the penalty area misses to the right of the goal.34:38
Free kick awarded for an unfair challenge on Martyn Woolford by Johnnie Jackson. Neil Kilkenny takes the direct free kick.32:56
The referee blows for offside. Tom Heaton takes the indirect free kick.31:32
The ball is swung over by Danny Haynes, clearance made by Richard Foster. Inswinging corner taken right-footed by Dale Stephens, Strike from close range by Michael Morrison clears the bar.30:31
Unfair challenge on Robert Hulse by James Wilson results in a free kick. The free kick is delivered right-footed by Dale Stephens from left wing, Marvin Elliott fouled by Michael Morrison, the ref awards a free kick. Free kick taken by Tom Heaton.28:38
Foul by Daniel Seaborne on Ryan Taylor, free kick awarded. Neil Kilkenny crosses the ball in from the free kick, save by Ben Hamer.27:23
The referee blows for offside. Tom Heaton takes the free kick.26:22
A cross is delivered by Martyn Woolford, Sam Baldock takes a shot. Save by Ben Hamer.22:59
The assistant referee flags for offside against Sam Baldock. Ben Hamer restarts play with the free kick.21:47
The ball is sent over by Daniel Seaborne. Danny Haynes produces a right-footed shot from close in and bounces off the post.19:46
The assist for the goal came from Dale Stephens.19:46 Goal scored
Goal! - Danny Haynes - Bristol C 0 - 1 Charlton Danny Haynes fires in a goal from inside the penalty area to the bottom left corner of the goal. Bristol City 0-1 Charlton.19:17
Dale Stephens has an effort at goal from just outside the penalty box hitting the post.17:54
Richard Foster has an effort at goal and missed to the right of the goal.17:12
A cross is delivered by Salim Kerkar.14:53
Bradley Pritchard crosses the ball, clearance made by Richard Foster.11:30
Salim Kerkar takes a shot. Save by Tom Heaton. Corner taken left-footed by Johnnie Jackson from the right by-line to the near post, clearance made by Ryan Taylor. Inswinging corner taken left-footed by Johnnie Jackson.8:59
Albert Adomah delivers the ball, Martyn Woolford takes a shot. Blocked by Leon Cort. Long range shot by Johnnie Jackson goes wide right of the goal.7:38
Robert Hulse concedes a free kick for a foul on James Wilson. Tom Heaton takes the free kick.1:23
Danny Haynes is ruled offside. Indirect free kick taken by Tom Heaton.0:00
The game kicks-off.
Live data and text provided by our data suppliers