McLaren had dominated the practice sessions leading up to qualifying and were favourites for pole, but they did not show their hand until the final lap of a session marked by track limits transgressions and other incidents.
World champion Max Verstappen was quickest on the first runs in the final session in his Red Bull, despite a big slide out of the final corner which he just managed to rescue from turning into a crash into the pit wall on the inside.
The McLarens were on used tyres for the first runs in the top 10 shootout and Norris was just 0.004secs behind Verstappen, who was on new tyres, with Piastri a further 0.036secs behind.
Verstappen did not improve on his final lap and he dropped down to fifth behind Norris, Piastri, Sainz and the impressive Haas of Nico Hulkenberg. The Dutchman ended up 0.350secs off the pace.
He said: “You never really had a good compare because many people kept aborting on their new tyres and when I went P1 other people were on scrubbed (tyres) so it didn’t give a fair performance assessment.
“If I didn’t drop it on the last corner I think I could have fought for second.”
Alpine’s Pierre Gasly took sixth, ahead of of Mercedes’ George Russell, Aston Martin’s Fernando Alonso, Sauber’s Valtteri Bottas and Red Bull’s Sergio Perez.
Leclerc went fastest with a lap at the end of the second session, but he had it deleted for exceeding track limits at Turn One.
He will start 19th after his penalty, one place ahead of Williams’ Franco Colapinto, who qualified 19th but like Albon has a five-place penalty for excessive gearbox usage.
Leclerc said he still had hopes of a miracle in the constructors’ championship.
“The joy will be even bigger if we pull it off after such a tough weekend,” he told BBC Sport. “I hope we can turn this around in the best possible way.
“I am very disappointed with my performance today and I am very disappointed with what happened on the engine yesterday but that makes me more determined to do something special tomorrow. So I will give it my all.”