Lewis Hamilton beat his Formula 1 title rival Sebastian Vetel in the Belgian Grand Prix to reduce the gap in the championship to seven points.
The Mercedes driver managed a late safety car and a tyre disadvantage to fend off the Ferrari with relative ease, as Daniel Ricciardo claimed a surprise third for Red Bull Racing.
Hamilton made a good start from pole position and built a 1.7-seconds lead before stopping for new soft tyres on lap 12 of 44.
Vettel ran two laps longer in the opening stint and rejoined two seconds behind Hamilton, who cleared Kimi Raikkonen the lap before Vettel pitted.
A great first full flying lap for Vettel took 1.2 seconds out of Hamilton’s lead and thrust the Ferrari into DRS range, but Hamilton responded immediately.
He built his advantage up to two seconds, before a safety car changed the complexion of the race entirely.
Force India duo Esteban Ocon and Sergio Perez had clashed on the run to Eau Rouge on the opening lap, then came together in more dramatic fashion on lap 29.
Fighting over seventh position, Ocon cut back on his team-mate exiting La Source, only for Perez to edge across and break Ocon’s front wing with his right-rear tyre.
That caused Perez’s tyre to deflate entering Eau Rouge and the pair littered the track with debris.
The field swapped tyres under the safety car period, with Hamilton taking softs to Vettel’s ultra-softs and then complaining over the radio as the safety car remained on track for three laps.
Vettel was tucked up underneath the Mercedes’ rear wing through Eau Rouge and Raidillon at the restart and pulled alongside as Hamilton defended on the run to Les Combes.
Somehow Hamilton hung on, and found enough speed on the slower tyre to bump Vettel out of DRS range and gradually extend his lead until the end to win by 2.3 seconds.
Ricciardo started the race sixth but made his way to the podium, at a track not suited to the Renault-powered Red Bull, with a blend of fortune and opportunism.
Max Verstappen suffered a mechanical problem early on and stopped at the side of the track exiting Eau Rouge, which handed Ricciardo fifth – and ultimately fourth as well.
Kimi Raikkonen failed to slow sufficiently under the yellow flags that were thrown while Verstappen’s car was recovered and had to serve a ten-second stop-go penalty.
That meant Ricciardo ran fourth under the late safety car, and used a slipstream and ultra-soft tyres at the restart to nail Valtteri Bottas’s soft-shod Mercedes into Les Combes.
Raikkonen dived inside Bottas at the same time to recover to fourth, as Bottas finished a muted fifth having run comfortably in third before the caution.
Nico Hulkenberg finished best of the rest for Renault with a quiet but excellent drive, while Romain Grosjean and Felipe Massa took advantage of the messy race to claim seventh and eighth.
Ocon, who labelled Perez a “f***ing idiot” over the radio, recovered to ninth as Perez eventually retired, while Carlos Sainz Jr took the final point.
Fernando Alonso ran as high as seventh but gradually fell back down the order and eventually retired with an engine problem in his McLaren-Honda.
Belgian Grand Prix race result:
1 Lewis Hamilton Mercedes 44 1h24m42.820s
2 Sebastian Vettel Ferrari 44 2.358s
3 Daniel Ricciardo Red Bull-Renault 44 10.791s
4 Kimi Raikkonen Ferrari 44 14.471s
5 Valtteri Bottas Mercedes 44 16.456s
6 Nico Hulkenberg Renault 44 28.087s
7 Romain Grosjean Haas-Ferrari 44 23h35m17.s
8 Felipe Massa Williams-Mercedes 44 23h35m17.s
9 Esteban Ocon Force India-Mercedes 44 23h35m17.s
10 Carlos Sainz Toro Rosso-Renault 44 23h35m17.s
11 Lance Stroll Williams-Mercedes 44 23h35m17.s
12 Daniil Kvyat Toro Rosso-Renault 44 23h35m17.s
13 Jolyon Palmer Renault 44 23h35m17.s
14 Stoffel Vandoorne McLaren-Honda 44 23h35m17.s
15 Kevin Magnussen Haas-Ferrari 44 23h35m17.s
16 Marcus Ericsson Sauber-Ferrari 44 23h35m17.s
17 Sergio Perez Force India-Mercedes 42 Not running
– Fernando Alonso McLaren-Honda 25 Retirement
– Max Verstappen Red Bull-Renault 7 Retirement
– Pascal Wehrlein Sauber-Ferrari 2 Retirement
1 Sebastian Vettel 220
2 Lewis Hamilton 213
3 Valtteri Bottas 179
4 Daniel Ricciardo 132
5 Kimi Raikkonen 128
6 Max Verstappen 67
7 Sergio Perez 56
8 Esteban Ocon 47
9 Carlos Sainz 36
10 Nico Hulkenberg 34
11 Felipe Massa 27
12 Romain Grosjean 24
13 Lance Stroll 18
14 Kevin Magnussen 11
15 Fernando Alonso 10
16 Pascal Wehrlein 5
17 Daniil Kvyat 4
18 Stoffel Vandoorne 1
19 Jolyon Palmer 0
20 Marcus Ericsson 0
21 Antonio Giovinazzi 0
1 Mercedes 392
2 Ferrari 348
3 Red Bull-Renault 199
4 Force India-Mercedes 103
5 Williams-Mercedes 45
6 Toro Rosso-Renault 40
7 Haas-Ferrari 35
8 Renault 34
9 McLaren-Honda 11
10 Sauber-Ferrari 5