McLaren's Jenson Button was dominant as he won the Belgian Grand Prix, with team-mate Lewis Hamilton and Ferrari's Fernando Alonso crashing out.
Hamilton and Alonso were taken out in a multi-car crash at the start, triggered by Lotus driver Romain Grosjean.
Button, who started on pole, was never threatened as Red Bull's Sebastian Vettel fought from 10th to second, ahead of Kimi Raikkonen in his Lotus.
Grosjean was handed a one-race ban for causing the accident.
Vettel is now second in the title race, 24 points behind Alonso. Red Bull team-mate Mark Webber is third, 12 points behind Vettel. Raikkonen is one point behind the Australian, 14 points ahead of Hamilton.
Button's victory leaves him sixth, but his title hopes are still a long shot, given he stands 63 points behind Alonso with 200 still available.
Button, world champion in 2009, led at the first corner and was never troubled as he won at Spa for the first time.
"This circuit is so special to most drivers," he said. "The way it flows, the history here. To get a victory here, lights to flag, is very special for me."
There was drama behind him at the start.
The right rear wheel of Grosjean's Lotus hit Hamilton's left front, knocking the McLaren into a spin and triggering chaos.
As the other drivers braked, Hamilton and Grosjean, out of control, took out Alonso and Sauber's Sergio Perez.
Alonso was especially lucky to avoid injury, with Grosjean's car flying over the front of his Ferrari and missing his head by about a metre.
The safety car was sent out onto the circuit to allow debris to be cleared.
Once the race had restarted on lap five, Vettel, on a one-stop strategy like Button, impressed as he made up ground.
The world champion made a series of impressive overtaking manoeuvres around the outside of the Bus Stop chicane at the end of the lap, including one that took him past Webber.
Vettel's pace ensured he took second as Raikkonen and the other drivers on two-stop strategies made their final stops.
"It was a crazy race from where I started," Vettel said. "The start was not so good and after the first corner when a lot of cars went off it was pretty crazy. Fortunately, we came back with a fantastic strategy.
"It was the right call. The car was quite good in the race and we were able to pick up some places.
"I had a lot of fun racing a lot of people. I'm looking forward already to coming back here next year. This circuit is unbelievable."
Raikkonen was caught up behind the Mercedes of Michael Schumacher, who was slow around the lap but very fast in a straight line.
Once Raikkonen had passed the seven-time champion - in a brave move into the 180mph swerves of Eau Rouge - he briefly closed on Vettel but, realising he did not have enough laps to make up a 13-second deficit, was forced to settle for third. He was also hampered by not being able to use all his Kers power-boost system.
"It's nice to be back here," Raikkonen said. "There are always a lot of fans and good racing. It's not the easiest day for me and the team. The car was not exactly as we liked. But we had a lot of fighting and we managed to get a lot of points for me and the team."
Schumacher's hopes of a strong finish to a poor weekend for Mercedes were dashed when high tyre wear forced him to abandon his attempt to do only one stop.
That dropped him to seventh at the finish, behind the impressive Force India of Nico Hulkenberg and Australian Webber.
Toro Rosso's Jean-Eric Vergne, who had a strong weekend after struggling in the first half of his debut season, was eighth, ahead of team-mate Daniel Ricciardo and the second Force India of Paul Di Resta.
Williams driver Bruno Senna was eighth heading into the last six laps but had to make a late stop because his tyres were worn out. He dropped to 12th behind the second Mercedes of Nico Rosberg.
It was a terribly unlucky day for Sauber after the strongest qualifying performance in their history.
Kamui Kobayashi, who started second, was, like Perez, caught up in the first-corner crash, eventually trailing home 13th.
It was also a day to forget for Pastor Maldonado.
After failing to finish in his Williams, he was given a five-place grid penalty for jumping the start and another for colliding with Timo Glock's Marussia.
Both punishments will be applied in next weekend's Italian Grand Prix.