Australian Mark Webber won a sunny British Grand Prix for Red Bull to deny Fernando Alonso a second successive victory and slash the Ferrari driver's Formula One lead to 13 points.
Alonso, winner at Silverstone last year, had led from pole position but was powerless to prevent Webber powering past six laps from the end and then take the chequered flag with a three second lead.
The victory was the 35-year-old's second of the season, after Monaco, and left the local resident with 116 points to Alonso's 129 after nine of 20 rounds. He became only the second double race winner of the year so far.
"Another great day for us and a great day for me to win here again. It is fantastic," he said on the team radio before being interviewed on the podium by triple world champion Jackie Stewart.
Webber won at Silverstone in 2010, again from second place on the grid, but he said Sunday's win had taken a bit longer to sink in.
"I don't think I've had a win when I've got victory so late in the race. I don't think Fernando had the right balance at the end of the race, but that can happen to any one of us," he added.
Webber's team mate and double world champion Sebastian Vettel was third on a dry track with the sun shining over the circuit after days of rain that had left the campsites waterlogged and approach roads clogged with traffic.
The skies then opened in a sudden, torrential downpour as teams were packing up.
"Thanks to all the fans out there," said Vettel on his return to the podium after four races off it. "It's been horrible weather for them, not just for us. But today the sun came out and British summer showed its best."
Brazilian Felipe Massa was fourth for Ferrari, his best result since 2010, ahead of the Lotus pair of Kimi Raikkonen and Romain Grosjean.
Red Bull stretched their lead in the constructors' championship with 216 points to Ferrari's 152 while McLaren slipped from second to fourth on 142 behind Lotus on 144.
Jenson Button's British Grand Prix jinx continued, before a predicted crowd of more than 125,000 people, with the McLaren driver failing to stand on the podium at his home race for the 13th year in a row.
The 2009 world champion, who has never finished higher than fourth at Silverstone, started 16th and ended up with only a point in 10th.
"Our car doesn't feel too bad, but everyone else's must feel really good, because they're a lot faster than us. I was racing the Williams and the Sauber," said Button.
His team mate Lewis Hamilton, the 2008 champion whose win that year remains the last by a British driver at home, was eighth after losing out to Michael Schumacher's Mercedes in the closing laps. He is now 37 points adrift of Alonso.
Force India's Paul Di Resta, the third British driver, had an even more miserable afternoon and retired after damage to the car on the opening lap when he was clipped by Grosjean.
Brazilian Bruno Senna was ninth for Williams.
Williams could have hoped for much more but their Venezuelan Pastor Maldonado collided with Mexican Sergio Perez on lap 12, ending the Sauber driver's race.
Perez said the stewards had to act.
"This guy will never learn if they don't do something. He could hurt someone. Everybody has concerns about him," he told the BBC.
Perez's Japanese team mate Kamui Kobayashi provided another moment of drama when he overshot his mark at the pitstop and sent mechanics sprawling like ninepins, without suffering serious injury.
"It was my fault. I overshot the braking. I had no practice running in the dry so I did not know how much I could push. I pushed too much and I apologise to the team," he said.
Caterham's Russian Vitaly Petrov did not start after his engine failed as he made his way around to the grid.
Which is your favourite Formula One circuit?