Jenson Button dominated a Belgian Grand Prix that began with a huge startline crashin which title contenders Fernando Alonso and Lewis Hamilton were eliminated.
With Sebastian Vettel coming through to finish second, the incident meant Alonso saw his championship lead slashed to 24 points.
The accident started when Lotus driver Romain Grosjean moved across the track on the approach to La Source and squeezed Hamilton's McLaren.
The two made contact and ploughed into the cars ahead in dramatic fashion. Alonso and Sergio Perez were also eliminated, while slow-starting front-row man Kamui Kobayashi and Pastor Maldonado (who jumped the start) both picked up damage.
The latter pair rejoined, but Maldonado was soon out following a restart clash with Timo Glock's Marussia.
The accident totally reshuffled the race order, with Button leading Kimi Raikkonen's Lotus, Force India duo Nico Hulkenberg and Paul di Resta, Michael Schumacher's Mercedes and Toro Rosso pair Daniel Ricciardo and Jean-Eric Vergne.
The Red Bulls were delayed in the chaos, leaving Mark Webber in eighth and Vettel 12th.
Button charged away from the outset, making a one-stop race work to perfection as he followed up his maiden McLaren pole with his first win since the season-opener in Australia.
Raikkonen lacked pace early on and was overtaken by Hulkenberg and Schumacher.
An early first stop helped the Lotus regain ground, but the best strategy appeared to be to pit once. A combination of that tactic and several early passing moves helped Vettel emerge in a clear second place.
Schumacher also tried to pit once, but found himself under big pressure from two-stoppers Raikkonen and Hulkenberg.
This led to some spectacular racing, including Raikkonen overtaking Schumacher around the outside into Eau Rouge, as the seven-time champion twice managed to fight back past his rivals using DRS. Eventually he had to admit defeat and pit again.
By then Raikkonen was long gone and heading for the final podium spot, ahead of Hulkenberg, Ferrari's Felipe Massa, and Webber.
Schumacher salvaged seventh, as the Toro Rossos and di Resta fell back to the tail of the top 10.
Nico Rosberg and Bruno Senna also had to make late tyre stops, leaving them outside the points.
Caterham briefly looked like it might achieve an upset as Heikki Kovalainen emerged in 10th on lap one. But he soon fell back and would later have two spins and a pitlane clash with Narain Karthikeyan.
PROVISIONAL RACE RESULTS The Belgian Grand Prix Spa-Francorchamps, Belgium; 44 laps; 308.052km; Weather: Sunny. Classified: Pos Driver Team Time 1. Button McLaren-Mercedes 1h29:08.530 2. Vettel Red Bull-Renault + 13.624 3. Raikkonen Lotus-Renault + 25.334 4. Hulkenberg Force India-Mercedes + 27.843 5. Massa Ferrari + 29.845 6. Webber Red Bull-Renault + 31.244 7. Schumacher Mercedes + 53.374 8. Vergne Toro Rosso-Ferrari + 58.865 9. Ricciardo Toro Rosso-Ferrari + 1:02.982 10. Di Resta Force India-Mercedes + 1:03.783 11. Rosberg Mercedes + 1:05.111 12. Senna Williams-Renault + 1:11.529 13. Kobayashi Sauber-Ferrari + 1:56.119 14. Petrov Caterham-Renault + 1 lap 15. Glock Marussia-Cosworth + 1 lap 16. Pic Marussia-Cosworth + 1 lap 17. Kovalainen Caterham-Renault + 1 lap 18. De la Rosa HRT-Cosworth + 1 lap Fastest lap: Senna, 1:52.822 Not classified/retirements: Driver Team On lap Karthikeyan HRT-Cosworth 30 Maldonado Williams-Renault 5 Perez Sauber-Ferrari 1 Alonso Ferrari 1 Hamilton McLaren-Mercedes 1 Grosjean Lotus-Renault 1 World Championship standings, round 12: Drivers: Constructors: 1. Alonso 164 1. Red Bull-Renault 272 2. Vettel 140 2. McLaren-Mercedes 218 3. Webber 132 3. Lotus-Renault 207 4. Raikkonen 131 4. Ferrari 199 5. Hamilton 117 5. Mercedes 112 6. Button 101 6. Sauber-Ferrari 80 7. Rosberg 77 7. Force India-Mercedes 59 8. Grosjean 76 8. Williams-Renault 53 9. Perez 47 9. Toro Rosso-Ferrari 12 10. Schumacher 35 11. Massa 35 12. Kobayashi 33 13. Hulkenberg 31 14. Maldonado 29 15. Di Resta 28 16. Senna 24 17. Vergne 8 18. Ricciardo 4