Ferrari's Carlos Sainz claimed his first Formula One victory on Sunday in a thrilling British Grand Prix halted by a first-lap crash and with the added mayhem of a track invasion by environmental protesters.
Red Bull's Mexican Sergio Perez was runner-up, 3.779 seconds behind the Spaniard, with seven-times world champion Lewis Hamilton third for Mercedes in his home race and taking fastest lap for a bonus point.
"Yes! We did it! Vamos!" exclaimed a delighted Sainz over the radio after a win that had looked unlikely despite him starting on pole position for the first time and in his 150th race.
"I don't know what to say, it's amazing.
"First race win, 150 races later, with Ferrari in Silverstone. I cannot ask for more. It's a very special day, a day that I will never forget, a very special weekend in general."
The victory ended a run of six successive Red Bull victories and made Sainz only the second Spaniard to win a grand prix after double world champion Fernando Alonso, who took fifth for Alpine.
The last nine laps were frantic, full of overtaking as the safety car came in and Perez, Ferrari's Charles Leclerc and Hamilton fought for second.
At one point, eight-times British GP winner Hamilton -- who led for eight laps -- passed both drivers in one move, then went from second to fourth and back to third for his second successive podium.
Championship leader Max Verstappen finished seventh for Red Bull after being slowed by a puncture and damaged bodywork, his overall lead over Perez cut from 46 to 34 points after 10 of 22 races.
Leclerc, who had led with 12 laps to go, finished an unhappy fourth after a strategy call that cost him victory.
The Monegasque stayed out during a late safety car deployment and then had to defend against rivals with fresher tyres.
McLaren's Lando Norris was sixth and Germany's Mick Schumacher, son of Ferrari great and seven-times world champion Michael, scored his first points in F1 with eighth for Haas. Team mate Kevin Magnussen finished 10th.
Four-times world champion Sebastian Vettel went from 18th to ninth for Aston Martin on his 35th birthday. There were only 14 finishers.
The race was red-flagged and halted for an hour after Chinese rookie Guanyu Zhou's Alfa Romeo became wedged on its side between the tyre wall and catch fence on lap one. He was later given the medical all-clear.
The car skidded upside down along the track before being catapulted over the barrier following a multi-car collision.
"He's conscious, talking and no fractures. Considering the circumstances, he is pretty good," said an FIA spokesman.
Williams's Alex Albon and Mercedes's George Russell, who had previously finished every race in the top five and was making his first home appearance for the team, were caught in the first-lap carnage and retired.
Albon was later flown to hospital for checks.
While the red flags were being waved, a group of 'Just Stop Oil' protesters ran on to the track at the high-speed Wellington Straight to boos from the crowd before being wrestled away.
The re-start returned to the previous grid order, with Sainz preventing a repeat of the first start when Verstappen had seized the lead.
The Spaniard lost out on lap nine when he went wide but retook the lead when Verstappen reported he had run over carbon fibre debris and slowed down.
"The car is 100% broken," he said over the radio, with the Red Bull pit wall assuring him that it was only bodywork damage and safe to continue.
Hamilton, who had been third before the red flags, dropped to sixth before fighting back and was leading by lap 25 when the Ferraris pitted.
Sainz was ordered to let Leclerc overtake on lap 30, his hopes seemingly over as Ferrari told him: "This is not good enough. We are swapping the cars."
That all changed again when Esteban Ocon pulled over with a fuel pump issue and the safety car came out, bunching up the field as Sainz and Hamilton pitted for fresh soft tyres and Leclerc remained out.