The historic British team started the final round of the year with a 21-point advantage over arch-rival Ferrari and had put one hand on the title trophy after qualifying, when Norris took pole ahead of teammate Oscar Piastri for a front-row lockout.
Though Carlos Sainz qualified third, Charles Leclerc was forced to launch from 19th after a scrappy qualifying compounded by a 10-place grid penalty for an engine component change.
But McLaren grip slipped immediately off the line, when Piastri was cleaned up by an errant Max Verstappen at the first turn.
The Dutchman hit the brakes from a long way back and overcooked his exit, making contact that sent both spinning off the track, gifting Sainz an easy move up to second place.
Leclerc, meanwhile, was making hay from the back of the grid, picking his way through the first-lap carnage to rise a sensational 11 places.
His excellent launch immediately got him passed Alex Albon and Yuki Tsunoda, whose car came perilously close to stalling on the grid, and he overtook Australian debutant Jack Doohan into the first turn.
He picked up a pair of places from the pirouetting Verstappen and Piastri and snuck past Zhou Guanyu too as the Chinese driver tried to make himself scarce in the melee.
He swept around Lewis Hamilton’s outside at turn 4 and made light work of Lance Stroll into the hairpin. At the turn 6-7 chicane he glided around the outside of Valtteri Bottas, Liam Lawson and Sergio Pérez, passing more than half the grid in less than half a lap.
A virtual safety car stalled his progress after Pérez’s car ground to a halt with a possible gearbox issue - though his race had already been ruined by Bottas, who tipped him into a spin at the chicane - but once racing resumed Leclerc patiently picked his way past Kevin Magnussen, Fernando Alonso and Nico Hülkenberg to run a net fifth behind Pierre Gasly and George Russell.
He undercut Russell with an earlier stop and made quick work of Gasly early in the second stint to complete his comeback to third behind teammate Sainz.
Together they turned up the pressure on leader Norris, who couldn’t afford to make a mistake with Piastri now out of podium contention.
Victory would guarantee McLaren the championship, but dropping just one place to either Ferrari driver would see the Italian team pinch the title.
Sainz tried to force the issue by making his sole pit stop first. Norris responded on the previous tour, but the Spaniard’s rapid out-lap cut the deficit from 3.5 seconds to just 1.5 seconds.
But Norris was equal to the task. Unmoved by the pressure from behind, he gradually brought his tyres into their working window and then massaged back open the gap.
Error free despite the risk, the life-long McLaren driver took the chequered flag by 5.8 seconds to secure his team its first constructors title since 1998.
“I’m very, very happy, just as I’m sure everyone in the team is,” he said. “It was ours to lose today, and I’m sure at certain moments people thought that it was not far away from being lost.
“For a minute, my heart was like, ‘Oh God, it’s not looking as likely’, but if I just kept my head down and kept focused. I knew I could deliver and do what I had to do.
“Proud is my biggest thing. Of course I’m happy I finished the season this way, but I’m way more happy for the team than I am for myself.”
Sainz’s final grand prix for Ferrari was typically solid in a car that couldn’t quite match the McLaren.
“Mixed feelings, I’m not going to lie,” he said. “We all came into this race trying to win the constructors championship, and ultimately we didn’t manage to do it.
“Both Charles and I have given absolutely everything this weekend. It hasn’t been an easy weekend for me, obviously, knowing it was the last one, but I did the best I could to stay focused and to do the maximum that the car could do today.
“I think we can be proud of the effort and the championship we put together.”
While Leclerc was pleased to have put together a barnstorming performance to finish 16 places higher than he started, the Monegasque said it hurt to fall short of the ultimate prize.
“I’m of course really happy about the race, but the disappointment is a lot bigger,” he said.
“McLaren has just done a better job than us, and congratulations to them, but it obviously hurts when you get to the last race.
“We just came short of our dream, which was to win the constructors’ [title], so it hurts.”
Title defeat means Ferrari’s championship drought stretches to 16 years, the longest in its history.
Lewis Hamilton executed a similarly impressive recovery drive, rising from 16th to fourth with a last-lap overtake on teammate George Russell, gutsily sweeping around his outside at the long and fast parabolic turn 9.
Team boss Toto Wolff described it as a the “drive of a world championship”. Hamilton will leave the team to take Sainz’s Ferrari seat next season.
Verstappen recovered from his first-turn crash and subsequent penalty to finish sixth ahead of Pierre Gasly, whose seventh place ahead of Haas driver Nico Hülkenberg secured his Alpine team sixth in the constructors championship.
Fernando Alonso scored two points for ninth ahead of the recovering Oscar Piastri.
Thai driver Albon finished 11th ahead of Tsunoda, Zhou, Stroll, Alpine debutant Doohan, Magnussen and Lawson, who retired late in the race with a smoking car.
Bottas retired from his final grand prix for the foreseeable future with crash damage after hitting Magnussen at the chicane. Williams rookie Franco Colapinto retired with a suspected power unit issue.