Match ends, Cardiff City 1, Charlton Athletic 2.
Charlton staged a second-half recovery to take the spoils at Cardiff in a hotly-contested Championship contest.
Federico Macheda gave Cardiff the lead early in the second half, turning in Kenwyne Jones' knock-back.
But Addicks substitute Chris Eagles cut back a cross for Tony Watt, who was lurking off his markers to fire home.
Then Charlton substitute Simon Church went tumbling under Sean Morrison's challenge in the area, with Yoni Buyens tucking the penalty away.
Although this was a contest between Championship mid-table teams - with Charlton in 12th just a point and two places above Cardiff - both sides came into the match in decent form.
Two wins in their last three games suggested Russell Slade was beginning to make his mark as Bluebirds boss, having endured some rocky patches since replacing Ole Gunnar Solskjaer in October 2014.
Guy Luzon has had even less time in the Addicks dugout, but the Israeli has steadily improved their fortunes since arriving in January.
Charlton came to Cardiff City Stadium with four wins from their last five matches, including the scalps of promotion-chasing Brentford and Nottingham Forest.
Both managers made four changes, with Cardiff's hand forced by an injury to goalkeeper David Marshall.
Simon Moore deputised in goal, Jones was restored to attack, while Noone and Peter Whittingham - making his 300th league start - got the nod in midfield
Chris Solly, Roger Johnson, Johann Berg Gudmundsson returned for Charlton, with Christophe Lepoint making his first start for the Addicks.
Neither keeper was unduly troubled until first-half injury time, when Joe Ralls - on for injured Cardiff skipper Aron Gunnarsson - was only denied by Stephen Henderson's smart low save at the near post.
The Charlton keeper had taken a knock during the first half and did not emerge after the break, with Marko Dmitrovic replacing him.
The deadlock was broken early in the second half thanks to the excellent Noone, who was a thorn in Charlton's side all afternoon.
The winger cut back inside and dug out a cross to the far post to find Jones, who nodded the ball back for strike partner Macheda to side-foot home.
Charlton responded by replacing LePoint with Eagles, who wasted no time in getting a shot on target but his strike lacked power and was easily gathered by Moore.
Only Bruno Ecuele-Manga's full length block denied Jordan Cousins, before Watt claimed a deserved equaliser.
Eagles went to the by-line before cutting the ball back for Watt on the penalty spot, who had dropped off intelligently and stroked the ball inside the post.
Then with four minutes remaining Charlton completed the comeback as their Wales striker Church, off the bench, went down in the area under Morrison's tackle.
Referee Patrick Miller pointed to the spot and Buyens' cheeky dink over Moore sealed the Charlton recovery.
Cardiff manager Russell Slade: "You could say we have been mugged.
"We dominated for long periods and should have put the three points to bed. But we have to learn to manage the game for the whole 90 minutes.
"We didn't clear the danger or get tight enough at one cross and the second goal was totally unnecessary."
Charlton head coach Guy Luzon: "We showed character when we were 1-0 down away from home to get the goal and then to continue playing after the goals.
"We didn't play well in the first half and I told the players at half-time that something had to change."
- 16ConnollyBooked at 40mins
- 5Ecuele Manga
- 15McAlenySubstituted forKennedyat 61'minutes
- 17GunnarssonSubstituted forRallsat 31'minutes
- 14MachedaSubstituted forRevellat 84'minutes
- 3da Silva
- 1HendersonSubstituted forDmitrovicat 45'minutes
- 21FoxBooked at 35mins
- 7Berg Gudmundsson
- 40LepointBooked at 43minsSubstituted forEaglesat 61'minutes
- 8BulotSubstituted forChurchat 74'minutes
- 6Bikey Amougou
- Pat Miller
- Shots on Target
Second Half ends, Cardiff City 1, Charlton Athletic 2.
Corner, Charlton Athletic. Conceded by Matthew Connolly.
Attempt blocked. Joe Ralls (Cardiff City) left footed shot from outside the box is blocked.
Attempt blocked. Joe Ralls (Cardiff City) left footed shot from outside the box is blocked. Assisted by Matthew Kennedy.
Attempt missed. Alex Revell (Cardiff City) header from the centre of the box is too high. Assisted by Matthew Kennedy with a cross.
Goal! Cardiff City 1, Charlton Athletic 2. Yoni Buyens (Charlton Athletic) converts the penalty with a right footed shot to the high centre of the goal.
Penalty conceded by Sean Morrison (Cardiff City) after a foul in the penalty area.
Penalty Charlton Athletic. Simon Church draws a foul in the penalty area.
Substitution, Cardiff City. Alex Revell replaces Federico Macheda.
Offside, Cardiff City. Joe Ralls tries a through ball, but Federico Macheda is caught offside.
Attempt missed. Joe Ralls (Cardiff City) left footed shot from outside the box is high and wide to the right.
Foul by Federico Macheda (Cardiff City).
Morgan Fox (Charlton Athletic) wins a free kick in the defensive half.
Attempt missed. Kenwyne Jones (Cardiff City) header from the centre of the box misses to the right. Assisted by Peter Whittingham following a set piece situation.
Craig Noone (Cardiff City) wins a free kick on the left wing.
Foul by Chris Solly (Charlton Athletic).
Matthew Kennedy (Cardiff City) wins a free kick in the defensive half.
Foul by Yoni Buyens (Charlton Athletic).
Federico Macheda (Cardiff City) wins a free kick on the left wing.