Oscar Piastri led Lando Norris to a McLaren one-two at the Spanish Grand Prix as a late safety car led to a controversial final few laps involving Red Bull's Max Verstappen.
Verstappen was forced on to hard tyres for the final sprint to the flag and was involved in a series of incidents with Mercedes' George Russell.
Verstappen crossed the line fifth but dropped to 10th as a consequence of a 10-second penalty for causing a collision with Russell.
The four-time champion had kept the pressure on the McLarens with a three-stop strategy compared to their two, and was on course for third place before the safety car, caused when Mercedes' Kimi Antonelli pulled off with an engine failure.
But his race fell apart after Red Bull were forced to fit hard tyres to Verstappen's car because they had no softer ones available.
It left him lacking grip at the restart to those around him and resulted in a madcap, almost unbelievable, series of incidents.
Verstappen almost lost his car when he had a massive wobble coming out of the fast final corner as the race restarted with five laps to go.
Leclerc pulled alongside on the straight, and the two cars touched as the Ferrari moved back towards the racing line while still alongside Verstappen.
Russell then dived down the inside of Verstappen at Turn One, and the two made contact, the Red Bull taking to escape road and retaining the position.
Verstappen complained that Russell had pushed him off, but his engineer Giampiero Lambiase ordered him to give the position back, citing the rules on racing which say that a driver on the inside trying an overtaking move has the right to the corner if he is far enough alongside going in.
Verstappen appeared to move over to the inside and give space to Russell to pass him on the outside on the entry to Turn Four with two laps to go.
But as Russell went around him, Verstappen suddenly appeared back on the inside and speared into his car.
The Briton went on the radio to ask what was going on, and Verstappen was penalised for the incident.
More to follow