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 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.
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.