The big striker leapt to nod home Chris Martin's deflected cross and complete a stirring fightback from the Canaries - although Charlton were convinced he had fouled goalkeeper Rob Eliot in the process of scoring.
The visitors had dominated the first half for long periods and looked to be heading towards a comfortable victory as they moved 2-0 ahead within 40 minutes. They took the lead after 18 minutes when poor defending from a corner allowed Deon Burton to send a diving header past goalkeeper Fraser Forster.
Phil Parkinson's side doubled their advantage five minutes before the interval when winger Lloyd Sam weaved his way down the right flank before delivering a superb cross which was nodded home by youngster Jonjo Shelvey.
It looked as though Norwich were up against it at that stage, but they responded well to the setback and were back in it just before half-time when a quick throw from Holt caught the Charlton defence napping and Wes Hoolahan marked his return to the side by running through and firing home.
Norwich piled on the pressure after the break, with Elliot twice denying youngster Korey Smith, but Norwich got their reward in the end as Holt bundled home his sixth goal of the season.