But the combination of the pace of the upgraded McLaren and Verstappen struggling with a lack of front grip meant Norris was able to stretch away, turning the tables on Verstappen, on whom Norris inflicted the pain the Dutchman usually does on the rest of the field.
In doing so, and winning by nearly eight seconds, he became the first driver to beat Verstappen on track when he had finished the race since Ferrari’s Carlos Sainz in Singapore in September last year.
Behind them, Leclerc drove a strong race to stay within two seconds of Verstappen despite making his pit stop for tyres four laps before the Red Bull driver.
His team-mate Carlos Sainz finished fourth on the track, but dropped to fifth behind Perez after being given a five-second penalty by the stewards for colliding with McLaren’s Oscar Piastri when passing the Australian with 17 laps to go.
Sainz had been angered by Piastri forcing him off the track when he passed the Ferrari at Turn 11 a few laps earlier, after which Sainz complained vociferously on the radio that he should be given the place back. But the stewards did not agree and felt Piastri had done nothing wrong.
The collision wrecked Piastri’s front wing and he had to stop for it to be replaced, but Sainz managed to get away with minimal damage.
Lewis Hamilton had an eventful race in his Mercedes, battling first with Nico Hulkenberg’s Haas and then Yuki Tsunoda’s RB to take sixth, just a second behind Perez, ahead of the Japanese and the second Mercedes of George Russell.
And Fernando Alonso recovered from a poor qualifying in the Aston Martin – the Spaniard started only 15th – to take ninth place, passing the Alpine of Esteban Ocon, who took the final point for 10th place.