Striker Yann Kermorgant returned to haunt his former team Leicester as he scored one and created another in Charlton's efficient victory.
The 31-year-old Frenchman was booed throughout but converted Bradley Pritchard's cross early on.
Anthony Knockaert missed before Chris Wood levelled from Ritchie De Laet's deflected cross as Leicester dominated.
Danny Haynes's winner came 12 minutes from the end when he took Kermorgant's flick and fired in from 20 yards.
The result continued Nigel Pearson's manager-of-the-month curse; since winning five out of five in January the Foxes have now suffered three consecutive defeats.
Playing in Leicester for the first time since his costly play-off semi-final penalty miss two years ago during an ill-fated spell with the Foxes, Kermorgant had the last laugh as Charlton performed a textbook smash-and-grab raid.
Knockaert was thwarted by Charlton keeper Ben Hamer, who did well to parry his shot behind, and Paul Konchesky failed to pick out three Leicester forwards when he was well placed.
Those chances allowed the visitors to go in front after 19 minutes when Pritchard got free down the left channel and pulled back for Kermorgant, who neatly converted from 12 yards to a chorus of boos.
Knockaert then wasted a golden opportunity to equalise six minutes before half-time but ballooned his effort over the bar after a good run by De Laet.
Despite showing little in attack, Pritchard could have put the Addicks further ahead but shot over with his lob and Kasper Schmeichel recovered well to deny Michael Morrison soon after.
Wood was twice denied before he fired in an eighth goal in seven matches since arriving from West Brom.
But Charlton substitute Haynes rifled into the top corner for a 2-1 lead with Hamer tipping over Danny Drinkwater's fizzing 30-yard effort behind and Wood smashing his free-kick wide during stoppage time.
Leicester boss Nigel Pearson:
"It's a disappointing result. I think they came to do a bit of a job on us and they did it well in terms of getting everybody behind the ball and limiting our ability to play the type of football that we do.
"When you concede the types of goals that were conceding it gives us a problem in terms of winning games and that's really the top and bottom of it tonight. I don't think we deserved to lose the game but we have."
Charlton boss Chris Powell:
"I've done the double over Leicester and my mentor and I don't know how to feel really. I'm pleased for my club and pleased for my group of players. We needed a result and they were made to work hard for it.
"It's huge because we had lost three games and drawn one in our last four. We've been playing well but we've just been getting hurt by late goals. It's fallen for us this evening.
"You just hope that they can continue to build on that and we're just looking for consistency. I hope this is the start of a really good run for us."
Live Text Commentary
Full Time The match has reached full-time.90:00 +2:50
Chris Solly concedes a free kick for a foul on David Nugent. Direct strike on goal from the free kick comes in from Chris Wood.90:00 +0:06
Ben Hamer takes the free kick.90:00 +0:06 Substitution
Substitution (Charlton) makes a substitution, with Matthew Taylor coming on for Scott Wagstaff.90:00 +0:06
Foul by Wes Morgan on Michael Morrison, free kick awarded.89:01 Substitution
Substitution Lawrie Wilson on for Dale Stephens.88:31
Inswinging corner taken from the left by-line by Paul Gallagher.88:06
Inswinging corner taken by Paul Gallagher from the left by-line, clearance made by Leon Cort.87:51
Shot by Danny Drinkwater. Ben Hamer makes a save.87:20
Outswinging corner taken by Paul Gallagher, clearance by Michael Morrison.87:06
Chris Wood takes a shot. Bradley Pritchard gets a block in.81:52
Free kick awarded for an unfair challenge on Danny Drinkwater by Chris Solly. Kasper Schmeichel takes the direct free kick.81:01
Corner from the right by-line taken by Paul Gallagher, clearance by Michael Morrison.79:58
Corner taken by Dale Stephens from the left by-line, save by Kasper Schmeichel.79:14 Substitution
Substitution Andy King replaces Matty James.77:55
Assist on the goal came from Yann Kermorgant.77:55 Goal scored
Goal! - Danny Haynes - Leicester 1 - 2 Charlton Danny Haynes scores a goal. Leicester 1-2 Charlton.76:33 Substitution
Substitution Danny Haynes replaces Dorian Dervite.70:55
Unfair challenge on Scott Wagstaff by Paul Konchesky results in a free kick. Free kick crossed left-footed by Johnnie Jackson from left wing.68:42
Assist by Ritchie De Laet.
Goal! - Chris Wood - Leicester 1 - 1 Charlton Chris Wood scores a goal from inside the penalty box to the bottom left corner of the goal. Leicester 1-1 Charlton.66:02
Paul Gallagher takes a corner.63:11 Substitution
Substitution Anthony Knockaert goes off and Paul Gallagher comes on.63:11 Substitution
Substitution (Leicester) makes a substitution, with Lloyd Dyer coming on for Ben Marshall.62:37
Inswinging corner taken by Ben Marshall.59:32
Free kick awarded for a foul by Yann Kermorgant on Wes Morgan. Kasper Schmeichel takes the direct free kick.58:05
The referee blows for offside against Chris Wood. Ben Hamer takes the free kick.56:40
Corner from left by-line taken by Ben Marshall.55:56
A cross is delivered by Matty James, save made by Ben Hamer.54:40
Dale Stephens fouled by David Nugent, the ref awards a free kick. Ben Hamer restarts play with the free kick.51:00
Dale Stephens fouled by Chris Wood, the ref awards a free kick. The ball is sent over by Johnnie Jackson, Michael Morrison takes a shot. Save by Kasper Schmeichel.50:03
Dale Stephens concedes a free kick for a foul on Danny Drinkwater. Direct free kick taken by Paul Konchesky.48:53
Bradley Pritchard produces a left-footed shot from long distance which goes wide right of the goal.46:54
Corner taken left-footed by Anthony Knockaert from the right by-line, save by Ben Hamer.45:01
The referee gets the second half underway.45:00 +2:12 Half time
Half Time It is the end of the first-half.45:00 +1:55
The ball is swung over by Paul Konchesky, save by Ben Hamer.45:00 +0:46
Long distance shot from Johnnie Jackson misses to the left of the goal.43:20
Anthony Knockaert takes a corner.42:22
Free kick awarded for an unfair challenge on Danny Drinkwater by Yann Kermorgant. Direct free kick taken by Ritchie De Laet.40:43
Corner taken by Matty James.38:29
Effort on goal by Anthony Knockaert from deep inside the penalty area misses to the right of the target.37:57
The official flags Yann Kermorgant offside. Paul Konchesky restarts play with the free kick.36:31
Matty James takes a shot. Save made by Ben Hamer.33:32
Unfair challenge on Michael Morrison by Chris Wood results in a free kick. Ben Hamer takes the free kick.32:05
Inswinging corner taken left-footed by Johnnie Jackson, clearance by Danny Drinkwater.30:10
Paul Konchesky takes a shot from a long way out clearing the crossbar.29:34
Ben Marshall crosses the ball in from the free kick, save by Ben Hamer.29:34 Booking
Booking Johnnie Jackson receives a caution.29:17
Free kick awarded for a foul by Johnnie Jackson on Matty James.27:50
Dale Stephens gives away a free kick for an unfair challenge on Chris Wood. Paul Konchesky delivers the ball from the free kick left-footed from left wing, Leon Cort makes a clearance.24:38
Free kick awarded for an unfair challenge on Bradley Pritchard by Anthony Knockaert. Ben Hamer takes the free kick.18:54
Assist by Bradley Pritchard.18:54 Goal scored
Goal! - Yann Kermorgant - Leicester 0 - 1 Charlton A goal is scored by Yann Kermorgant from inside the area to the bottom right corner of the goal. Leicester 0-1 Charlton.17:28
Yann Kermorgant gives away a free kick for an unfair challenge on Wes Morgan. Kasper Schmeichel takes the direct free kick.16:51
Chris Wood challenges Chris Solly unfairly and gives away a free kick. Free kick taken by Ben Hamer.11:54
Anthony Knockaert challenges Scott Wagstaff unfairly and gives away a free kick. Johnnie Jackson delivers the ball from the free kick left-footed from left channel.8:25
Ritchie De Laet delivers the ball, Wes Morgan produces a header from inside the area that goes over the crossbar.6:21
Bradley Pritchard produces a left-footed shot from just outside the penalty box that misses to the left of the goal.2:57
Unfair challenge on Scott Wagstaff by Matty James results in a free kick. Johnnie Jackson takes the direct free kick.2:35
Inswinging corner taken right-footed by Matty James from the left by-line, Ben Hamer makes a save.2:12
Anthony Knockaert takes a shot. Save by Ben Hamer.0:47
The official flags Yann Kermorgant offside. Free kick taken by Kasper Schmeichel.0:00
The game gets underway.
Live data and text provided by our data suppliers