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.
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 presser 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.
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
44 laps; 308.052km;
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
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:
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
All timing unofficial