Fernando Alonso ended Ferrari's victory drought by charging to his team's first victory of the year in the British Grand Prix.
Championship leader Sebastian Vettel and poleman Mark Webber had to settle for the remaining podium spots in the two Red Bulls, with Vettel just holding on in a huge late battle between the pair.
None of the British drivers made it onto the podium - Lewis Hamilton faded to fourth for McLaren after a superb early charge, and Jenson Button retired following a pit error.
The race had got underway in half-wet/half-dry conditions, with the area around the original start/finish area sodden but the new grid relatively dry by comparison.
Vettel got the jump on poleman Webber off the line, and charged into a comfortable early lead, while the Australian kept Alonso at bay in third.
Hamilton provided most of the initial action, making very rapid progress from his disappointing 10th on the grid to attack Felipe Massa's Ferrari for fourth within a handful of laps.
Michael Schumacher triggered the move to slicks tyres somewhat accidentally when he slithered into Kamui Kobayashi's Sauber on lap 10 and had to pit for a new front wing on his Mercedes, taking on dry rubber at the same time.
The German's immediate burst of pace convinced everyone else to come in, with Webber, Alonso and Hamilton choosing lap 12 while Vettel and Massa stayed out till lap 13.
Earlier proved slightly the better option, as by the time everyone was back up to speed on slicks, Vettel's lead over Webber was down to 3.3s, and rapidly getting smaller, although once the two Red Bulls were within 1.5s Vettel managed to raise his pace and keep his team-mate under control.
Alonso initially struggled to get temperature into his slicks and not only fell away from the Red Bulls, but lost third to a charging Hamilton into Copse.
But once the Ferrari and Pirellis were working in harmony again, Alonso started flying. He used DRS to sweep past Hamilton into Brooklands on lap 23, and both then started hunting down the Red Bulls.
They got close enough that when both Vettel and Webber had slow second pitstops on laps 26 and 27, they fell to third and fourth behind new leader Alonso and Hamilton.
Now in clear air, Alonso began to look unstoppable - storming away from Hamilton at a second per lap as the McLaren had to start focusing on holding off the Red Bulls.
He succeeded until the final pitstops, when Vettel stopped a lap sooner and jumped ahead. But even with the McLaren out of his way, Vettel could not catch the now dominant Alonso, who was long gone and heading for his first win since Korea last year.
With his team instructing him to save fuel, Hamilton backed off and lost third to Webber, who then caught Vettel and mounted a huge late effort to overtake his team-mate until ordered to 'maintain the gap' on the final lap.
The slowing Hamilton had Massa all over him going into the closing moments, but retained fourth in a wild, wheel-banging battle through the last corners of the race.
Button ran fifth until the final stops, when he was sent out with his right front wheel not properly attached and hard to park and retire in the pit exit.
Nico Rosberg made a two-stop strategy work to take sixth for Mercedes, just ahead of Sergio Perez's Sauber. Nick Heidfeld salvaged eighth from Renault's tough weekend, with Schumacher recovering well to take ninth, followed by Toro Rosso's Jaime Alguersuari, Adrian Sutil's Force India and Vitaly Petrov in the other Renault.
Paul di Resta's brilliant qualifying effort was wasted when a pitstop miscommunication badly delayed the Force India. He later needed a new front wing after clashing with Sebastien Buemi in an incident that forced the Toro Rosso to retire due to damage from a resultant puncture.
PROVISIONAL RACE RESULTS
The British GP
Weather: Wet, then dry.
Pos Driver Team Time
1. Alonso Ferrari 1h28:41.194
2. Vettel Red Bull-Renault + 16.511
3. Webber Red Bull-Renault + 16.947
4. Hamilton McLaren-Mercedes + 28.986
5. Massa Ferrari + 29.010
6. Rosberg Mercedes + 1:00.665
7. Perez Sauber-Ferrari + 1:05.590
8. Heidfeld Renault + 1:15.542
9. Schumacher Mercedes + 1:17.912
10. Alguersuari Toro Rosso-Ferrari + 1:19.108
11. Sutil Force India-Mercedes + 1:19.712
12. Petrov Renault + 1:20.600
13. Barrichello Williams-Cosworth + 1 lap
14. Maldonado Williams-Cosworth + 1 lap
15. Di Resta Force India-Mercedes + 1 lap
16. Glock Virgin-Cosworth + 2 laps
17. D'Ambrosio Virgin-Cosworth + 2 laps
18. Liuzzi HRT-Cosworth + 2 laps
19. Ricciardo HRT-Cosworth + 3 laps
Fastest lap: Alonso, 1:34.908
Driver Team Gap
Button McLaren-Mercedes 11
Buemi Toro Rosso-Ferrari 26
Kobayashi Sauber-Ferrari 28
Trulli Lotus-Renault 41
Kovalainen Lotus-Renault 49
World Championship standings, round 9:
1. Vettel 204 1. Red Bull-Renault 328
2. Webber 124 2. McLaren-Mercedes 218
3. Alonso 112 3. Ferrari 164
4. Hamilton 109 4. Mercedes 68
5. Button 109 5. Renault 65
6. Massa 52 6. Sauber-Ferrari 33
7. Rosberg 40 7. Toro Rosso-Ferrari 17
8. Heidfeld 34 8. Force India-Mercedes 12
9. Petrov 31 9. Williams-Cosworth 4
10. Schumacher 28
11. Kobayashi 25
12. Sutil 10
13. Alguersuari 9
14. Buemi 8
15. Perez 8
16. Barrichello 4
17. Di Resta 2
All timing unofficial