Bryan Hughes came off the bench to head home a dramatic last-minute winner for Charlton against 10-man Aston Villa.
Villa's Steven Davis beats Darren Bent to the ball
Gareth Barry put Villa ahead from the spot after he was brought down in the area by Hermann Hreidarsson.
Charlton, who had earlier hit the bar through Darren Ambrose, levelled when Darren Bent met Talal El Karkouri's long ball with a precise diving header.
Barry saw red after an hour for hauling down Dennis Rommedahl but Villa looked to have held on before Hughes struck.
New Charlton boss Alan Pardew saw this as a must-win game for his relegation-threatened side before kick-off - and in the end his players did not let him down.
606 DEBATE: Your reaction to Charlton's victory
Understandably the Addicks had looked short of confidence early on, as did Villa - who have lost their last four games and are without a win in nine matches.
There had been no chances of note at either end until Ambrose picked up the ball outside the box on 18 minutes and curled a sweetly-struck shot against the bar with Villa keeper Gabor Kiraly beaten.
Bent and Ambrose forced further saves from Kiraly but Charlton almost took the lead out of nothing when a mix-up between Scott Carson and Hreidarsson allowed Gabriel Agbonlahor to steal in and head wide.
That was Villa's first chance of the half - but they were somehow ahead before the break.
Hreidarsson rashly dived in to challenge Barry in the box and although he pleaded his innocence, television replays showed he had clearly caught the Villa midfielder.
Barry stepped up himself to smash the penalty past Carson for his ninth goal of the season - and his fifth from the spot.
Charlton came out after the interval looking full of fight, but initially they lacked the quality to break down Villa.
That all changed when El Karkouri's long ball eluded Olof Mellberg and Bent ghosted in to head downwards past Kiraly.
Suddenly Pardew's side had the belief to go with their application and they were given another boost when Barry saw red for a professional foul on Rommedahl as the Danish winger raced clear.
Djimi Traore almost completed the turnaround minutes later - but his header was cleared off the line and Villa were able to compose themselves again at the back, and even threaten themselves late on.
Pardew, who was denied a win in his first game in charge against Fulham by a last-minute goal, must have thought he was out of luck again when Agbonlahor raced clear for Villa - but his shot trickled wide.
And with the 90 minutes almost up, it was the Addicks who struck, Hughes reacting quickly when Hreidarsson nodded the ball back across goal to head home a dramatic winner.
The Addicks still have it all to do if they are to retain their Premiership status - but this win means they still have hope that they can save themselves.
Charlton manager Alan Pardew:
"This is not a turning point but it has put pressure on other clubs who are in the bottom half of the table.
"We've got a great opportunity now, we have some nice home games to come and we have seven or eight to win.
"That win was for the staff here to say thank you very much and I hope we can build on it."
Aston Villa boss Martin O'Neill:
"We had control but then threw it away at the end. Not for the first time recently we've gone ahead.
"We play some nice football but aren't getting points on the board. We had a great chance to win but didn't take it.
"My disappointment is that if you can't win the game then see it through. We should have been able to do that."
Charlton: Carson, Sankofa, Hreidarsson, El Karkouri, Traore, Ambrose, Kishishev (Hughes 46), Holland, Rommedahl (Thomas 83), Marcus Bent (Hasselbaink 80), Darren Bent.
Subs Not Used: Myhre, Fortune.
Booked: El Karkouri, Sankofa.
Goals: Darren Bent 57, Hughes 90.
Aston Villa: Kiraly, Mellberg, Hughes, Cahill, Barry, Davis, McCann, Gardner, Petrov (Osbourne 70), Angel (Bouma 63), Agbonlahor.
Subs Not Used: Olejnik, Baros, Ridgewell.
Sent Off: Barry (61).
Goals: Barry 40 pen.
Ref: R Styles (Hampshire).