Match ends, Charlton Athletic 2, Birmingham City 1.
Jorge Teixeira scored a 94th-minute winner as struggling Charlton Athletic came from behind to seal a vital win against Birmingham City.
The visitors took the lead when Paul Caddis' cross took a deflection and reached Jon Toral who turned it home.
Charlton equalised six minutes later through Johann Berg Gudmundsson whose shot bounced off Paul Robinson and in.
The hosts sealed all three points in added time when Teixeira rose to meet Ademola Lookman's corner.
Teixeira's goal was his second in his last three matches for Charlton, who remain next to bottom of the Championship table and six points from safety despite the victory.
Birmingham's outside hopes of making a late charge into the play-off places looks unlikely as they stay ninth in the table, eight points below sixth-placed Derby County.
The match was delayed by four minutes when Charlton fans threw hundreds of small sponge footballs on to the pitch seconds into the match and chanted against owner Roland Duchatelet.
Addicks supporters carried out a similar protest at their 2-0 win against Middlesbrough on 13 March when a number of beach balls were thrown onto the playing surface.
Charlton head coach Jose Riga:
"I know that there are two stories from today's game and I want only to be involved in the sporting one, but we really felt that the fans were pushing us today for the whole 90 minutes.
"When you show your passion sweating for the club and fighting for the club, English fans will be behind you.
"We cannot master the other results and we can't expect help from the other teams, but today I just want to share my happiness with the players and the crowd.
"We knew from Birmingham's results that all of their games are very close, but at the end I think we deserved the win today."
Birmingham manager Gary Rowett:
"It was a hugely frustrating afternoon to lose right at the end, but that was the state of the game.
"Both teams were doing everything they could to try and get a winner. They had breakaways, we had lots of breakaways in the second half and really should have made more of them.
"I would rather concede a counter-attack than from a corner when everyone is back and two or three players were stood watching while their player heads it in. That was particularly galling but a point wouldn't have been a lot of good for us either.
"We've got a hell of a lot to do to make the play-offs now, but I have a really honest bunch of players here so I can't be too disappointed with them."
- 47MottaSubstituted forMakienokat 90+2'minutes
- 7Berg GudmundssonBooked at 82minsSubstituted forJacksonat 84'minutes
- 12DiarraBooked at 57mins
- 2YunSubstituted forLookmanat 45'minutes
- 3GroundsBooked at 82mins
- 11CotterillSubstituted forSolomon-Otaborat 74'minutes
- 7FabbriniSubstituted forDonaldsonat 67'minutes
- 20ToralSubstituted forMaghomaat 45+5'minutes
- Paul Tierney
- Shots on Target
Second Half ends, Charlton Athletic 2, Birmingham City 1.
Goal! Charlton Athletic 2, Birmingham City 1. Jorge Teixeira (Charlton Athletic) header from very close range to the centre of the goal. Assisted by Ademola Lookman with a cross following a corner.
Substitution, Charlton Athletic. Simon Makienok replaces Marco Motta.
Corner, Charlton Athletic. Conceded by Paul Robinson.
Corner, Charlton Athletic. Conceded by Jonathan Grounds.
Ademola Lookman (Charlton Athletic) wins a free kick in the attacking half.
Foul by David Davis (Birmingham City).
Attempt missed. Jacques Maghoma (Birmingham City) right footed shot from outside the box is high and wide to the right.
Attempt blocked. Jacques Maghoma (Birmingham City) right footed shot from outside the box is blocked. Assisted by Jonathan Grounds.
Ademola Lookman (Charlton Athletic) wins a free kick in the defensive half.
Foul by Jonathan Grounds (Birmingham City).
Attempt blocked. Clayton Donaldson (Birmingham City) right footed shot from the left side of the box is blocked. Assisted by Jacques Maghoma.
Attempt blocked. Ademola Lookman (Charlton Athletic) right footed shot from outside the box is blocked. Assisted by Alou Diarra.
Substitution, Charlton Athletic. Johnnie Jackson replaces Johann Berg Gudmundsson.
Offside, Charlton Athletic. Johann Berg Gudmundsson tries a through ball, but Ademola Lookman is caught offside.
Attempt missed. Alou Diarra (Charlton Athletic) header from the left side of the box is just a bit too high. Assisted by Johann Berg Gudmundsson with a cross following a set piece situation.
Johann Berg Gudmundsson (Charlton Athletic) is shown the yellow card.
Jonathan Grounds (Birmingham City) is shown the yellow card for a bad foul.
Jordan Cousins (Charlton Athletic) wins a free kick on the right wing.