Substitute Kei Kamara scored his first goal in English football with six minutes left to cancel out Leon Osman's first-half header for Everton. Defeat was, however, harsh on Everton, who had been the better side for long spells, with Marouane Fellaini central to all their attacking threat.
Norwich created the first opening on five minutes. Wes Hoolahan played Robert Snodgrass into the left side of the Everton penalty area, but his angled shot was blocked by Sylvain Distin as the ball looped up over the crossbar for a corner.
Everton then forced Norwich keeper Mark Bunn into action when he first palmed away a deflected cross from fit-again right-back Seamus Coleman and then had to be alert as Nikica Jelavic turned his marker to drill a low shot goalwards from 10 yards.
Both teams continued to press, but when Norwich midfielder Jonny Howson found space for a shot some 25 yards out, his goalbound effort cannoned off the back of team-mate Holt.
On 35 minutes, the ball broke for Holt at the edge of the Everton penalty area, but the Norwich captain could not get enough power on his shot, which was well saved by Tim Howard, making his 300th Everton appearance.
It was the visitors, though, who took the lead six minutes before half-time. Left-back Leighton Baines floated the ball across the Norwich six-yard box, where it was missed by both Johnson and Sebastien Bassong, allowing an unmarked Osman to glance his header past Bunn.
The home side looked for a response at the start of the second half, but lacked enough width to really stretch the Everton defence.
Hughton made a change on the hour, as Luciano Becchio was replaced by Kamara, on loan from Major League Soccer club Sporting Kansas City. The Sierra Leone international almost became an instant hero when he tried an acrobatic scissors-kick, but it lacked the power to test Howard.
Hughton looked to add some width to Norwich's attack as Anthony Pilkington replaced Hoolahan while Belgium forward Kevin Mirallas came on for Everton with 12 minutes left, as Jelavic made way.
Norwich had more tempo now and were level on 84 minutes. Pilkington's run down the left saw the ball blocked behind for a corner. Snodgrass' delivery picked out Kamara, and his downward header beat Howard as Carrow Road erupted.
The Canaries pressed for a dramatic winner, with Distin's superb block keeping out Holt's close-range effort. However, there was still time for another chance, which the Norwich captain dispatched at the far post after a deep cross from Russell Martin had been nodded on by Bassong.