Match ends, Bristol City 1, Charlton Athletic 1.
Harry Lennon's injury-time strike rescued a point for Charlton Athletic at fellow strugglers Bristol City.
Nathan Baker, on loan from Aston Villa, met Luke Freeman's far-post corner to put City ahead just before half-time.
The home side missed a host of chances, with Marlon Pack's penalty, after Jonathan Kodjia was hauled down by Lennon, rattling the crossbar.
And they were made to pay for their profligacy in front of goal when Lennon guided the ball in off the post.
It was cruel on Steve Cotterill's side, who carved out opportunity after opportunity during a one-sided second half but were unable to put the game to bed.
Kodjia was arguably most guilty, twice sending close-range headers off target and then failing to trouble goalkeeper Stephen Henderson when through on goal.
At the other end, Tareiq Holmes-Dennis' well-placed curler, palmed away by Frank Fielding, was the only occasion prior to Lennon's last-gasp intervention that Charlton seriously threatened.
The result, which means last season's League One champions remain without a Saturday home win since February, slip into the relegation zone - two points above Charlton in 23rd.
Bristol City manager Steve Cotterill:
"Charlton have ended up getting a point they never deserved.
"The boys are giving me everything. If we had won four or five nil, which we should have done, people would have gone away saying how well we had played.
"We have to make more of our scoring opportunities. I don't blame Marlon Pack because his penalty was two inches from being perfect.
"We had so many other chances. Charlton were just trying not to get beaten, which is why they had so many men back getting in the way of our shots."
Charlton interim head coach Karel Fraeye:
"We come away with a good feeling after scoring so late. I am sure Bristol City will feel they deserved more and I have to agree with that.
"As my skipper said to the players after the game, this can be a turning point mentally for the team because we have given away late goals in the past.
"I am delighted that Harry Lennon scored because having conceded the penalty it was an extra special feeling for him. He is a young player who gives everything for the shirt."
- 15FreemanBooked at 89mins
- 18WilbrahamBooked at 75mins
- 22KodjiaSubstituted forBurnsat 90+4'minutes
- 12DiarraSubstituted forSarrat 32'minutes
- 8CousinsSubstituted forHolmes-Dennisat 45'minutes
- 37LookmanBooked at 52mins
- 2Vaz TeSubstituted forBaat 54'minutes
- Oliver Langford
- Shots on Target
Second Half ends, Bristol City 1, Charlton Athletic 1.
Foul by Simon Makienok (Charlton Athletic).
Luke Ayling (Bristol City) wins a free kick in the defensive half.
Substitution, Bristol City. Wes Burns replaces Jonathan Kodjia.
Goal! Bristol City 1, Charlton Athletic 1. Harry Lennon (Charlton Athletic) right footed shot from the centre of the box to the top right corner.
Attempt blocked. Ademola Lookman (Charlton Athletic) left footed shot from the centre of the box is blocked.
Offside, Bristol City. Korey Smith tries a through ball, but Jonathan Kodjia is caught offside.
Offside, Bristol City. Aaron Wilbraham tries a through ball, but Jonathan Kodjia is caught offside.
Offside, Charlton Athletic. Morgan Fox tries a through ball, but Simon Makienok is caught offside.
Corner, Charlton Athletic. Conceded by Nathan Baker.
Attempt blocked. Reza Ghoochannejhad (Charlton Athletic) left footed shot from the left side of the box is blocked. Assisted by Simon Makienok with a headed pass.
Luke Freeman (Bristol City) is shown the yellow card for a bad foul.
El-Hadji Ba (Charlton Athletic) wins a free kick in the defensive half.
Foul by Luke Freeman (Bristol City).
Attempt missed. Reza Ghoochannejhad (Charlton Athletic) right footed shot from outside the box is close, but misses to the right.
Attempt blocked. Luke Freeman (Bristol City) right footed shot from the centre of the box is blocked. Assisted by Jonathan Kodjia.
Foul by Tareiq Holmes-Dennis (Charlton Athletic).
Elliott Bennett (Bristol City) wins a free kick in the defensive half.
Foul by Reza Ghoochannejhad (Charlton Athletic).