Charles Leclerc led away as Hamilton jumped Vettel at the start. However, Vettel got the place back on the Kemmel straight.
There was a mess behind. Verstappen hit Raikkonen at La Source and the Dutchman retired after he had steering damage and hit the wall at Eau Rouge. Ricciardo was also hit on the exit of T1 and had to pit, along with Raikkonen. Sainz retired behind the Safety Car that was deployed following Verstappen’s crash.
Leclerc, Vettel, Hamilton, Bottas, Norris, Grosjean, Magnussen, Perez, Gasly and Stroll was the top 10 order behind the SC.
On the restart, Magnussen got swallowed up by a number of drivers and dropped outside the top 10.
Vettel pitted at the end of lap 15 with Hamilton close behind him on track. Leclerc followed 6 laps later, followed by Hamilton a lap later. It meant the German got a massive undercut and hit the front ahead of Leclerc, Hamilton and Bottas.
With Leclerc quickly gaining on Vettel, Ferrari told the German to move over – and he did it at the start of lap 27.
Vettel hit tyre trouble and got gobbled up by the Mercedes of Hamilton on lap 32 as the Brit took P2. Ferrari boxed the German two laps later which moved Bottas up to 3rd.
Leclerc held off a rampaging Hamilton to take his maiden Grand Prix victory. Bottas completed the podium positions. Vettel, Albon, Perez, Kvyat, Hulkenberg, Gasly and Stroll rounded out the top 10.
It was a crazy last lap as Lando Norris broke down from 5th place and Antonio Giovinazzi crashed out of P9.
Daniel Ricciardo, who had been in the top 10 for most of the race, ran out of tyres in the closing stages and dropped outside the points.
Norris, Magnussen, Grosjean, Ricciardo, Russell, Raikkonen, Kubica and Giovinazzi were the other classified finishers.