Andy Reid slammed home two penalties in two minutes as Charlton overcame a stubborn Norwich side at The Valley.
Substitute Izale McLeod was hauled down by Gary Doherty with five minutes left for the first and was then felled by Julien Brellier for the second.
Chris Iwelumo nodded onto the underside of the bar in the first half and Reid shaved the woodwork after the break.
Darren Huckerby volleyed close for Norwich whose misery was compounded by Dion Dublin's last-minute red card.
Charlton manager Alan Pardew:
"We really controlled the game.
"I was disappointed not to score until the 85th minute. But I was pleased with everything tonight. We penetrated at will at times.
"The captain Andy Reid was brilliant, he was driving us on all night."
Norwich manager Peter Grant:
"Danny Mills should already have been off the field and it wasn't a headbutt.
"It's important to finish with 11 men but unfortunately we couldn't because somebody cheated."
Charlton: Weaver, Mills, Fortune, Bougherra, Powell, Sam (Ambrose 90), Zheng (Sodje 90), Reid, Semedo, Varney (McLeod 80), Iwelumo.
Subs Not Used: Randolph, Moutaouakil.
Booked: Varney, Semedo.
Goals: Reid 85 pen, 88 pen.
Norwich: Marshall, Otsemobor, Dublin, Doherty, Drury, Chadwick (Croft 46), Russell, Brellier (Cureton 89), Lappin, Huckerby, Brown (Shackell 89).
Subs Not Used: Gilks, Strihavka.
Sent Off: Dublin (90).
Booked: Huckerby, Doherty.
Ref: Jarnail Singh (Middlesex).