The key to Hamilton’s victory came with a perfectly-timed pitstop for intermediate tyres, just as Rosberg was making huge inroads into his lead.
Williams duo Felipe Massa and Valtteri Bottas enjoyed a moment of glory when they ran 1-2 in the early stages, but Hamilton established himself out front after the first pitstops.
Mercedes’ F1 champion recovered from a poor getaway, in which he dropped from pole position to third, and then drove confidently when rain fell in the second-half of the race before timing his switch to the intermediate tyre well.
Nico Rosberg finished second, the German able to pass both Valtteri Bottas and then Felipe Massa, who struggled in the wet conditions after leading the first stint for Williams, to limit the loss to Hamilton in the championship, with the gap now 17 points.
Ferrari’s Sebastian Vettel benefited from an early switch to the intermediates to leapfrog both Williams as the rain intensified to finish third.
Massa made an explosive start from third on the grid, slicing through the middle of the slow-starting Mercedes to take the lead into Abbey, with Bottas slotting into second ahead of Hamilton and Rosberg.
Hamilton reclaimed second with a pass on Bottas into Village, but the race was then neutralised when the safety car was called into action following collisions in the midfield.
The Lotus of Romain Grosjean appeared to tangle with the Red Bull of Daniel Ricciardo, which speared the Frenchman into his team-mate Pastor Maldonado, putting both out of the race.
That incident caused a secondary accident behind with Fernando Alonso taking avoiding action and hitting his McLaren team-mate Jenson Button, which put the Briton out of the race and left Alonso needing to pit for a new nose.
At the restart, Hamilton launched an attack on Massa into Club, but ran wide as the Williams defended the lead.
That opened the door for Bottas to nip in and take second, with Hamilton having to fend off Rosberg.
Bottas closed on Massa and while the team initially told both drivers to work together, it then allowed Bottas to attack but the Finn could not find a way through.
Hamilton was the first to pit, crucially rejoining in front of the longer-running Force India of Sergio Perez, with Massa and Rosberg pitting together the next time around.
Massa exited his pitbox alongside Rosberg and kept his nose in front on the exit but by then, Hamilton had gone through.
Bottas then pitted and rejoined between Massa and Rosberg, meaning Hamilton inherited the lead, the Briton leading for the 18th race in succession to break Sir Jackie Stewart’s 45-year-old record.
The rain added a further headache later, but gave Rosberg a chance to fight pass both Bottas and Massa before closing on Hamilton.
The leader then timed his switch to intermediates perfectly and re-established a gap over Rosberg, who came in one lap later and had to settle for second.
Williams’s race unravelled when the rain came, with Massa and Bottas struggling for pace and ending up fourth and fifth, jumped by Vettel as Ferrari made an earlier dive for intermediates and then pulled clear.
Red Bull’s Daniil Kvyat was sixth and nearly caught Bottas at the end.
Crucially, Hamilton pitted first on lap 20, a very quick 2.4s stop and pitlane time of 28.4s.
Massa and Rosberg pitted together a lap later, Massa stationary for 3.8s due to a slow right-rear change, and he just managed to squeeze out of the pitlane ahead of Rosberg. They both rejoined behind Hamilton, however, who was now the net leader as Bottas stayed out on his old mediums.
Bottas pitted on lap 22, a 3.2s stop, and rejoined behind both Hamilton and Massa.
Rosberg nosed alongside Bottas through The Loop, but Bottas hung on grimly around the outside of him through Aintree.
Hamilton found himself in the lead by 3s, ahead of Massa, Bottas and Rosberg.
Rosberg was told to push on this stint, but made little inroads into the Williams pair ahead of him at this point.
The race was neutralised on lap 34 under the virtual safety car when Carlos Sainz’s Toro Rosso ground to a halt at Club and needed pushing away by marshals.
As soon as the VSC ended, it began to spit with rain. Rosberg ran wide at Woodcote on lap 37, with only part of the track affected.
Rosberg then came to life in the tricky conditions, first passing Bottas for third into Maggots after Bottas had a huge twitch at Copse, and then he dealt with Massa for second at Village on lap 41.
Rosberg tore into Hamilton’s lead, taking 2s out of him on lap 42. Hamilton – who complained “I’ve got no grip on these tyres” – countered by pitting at the end of lap 43, going on to intermediates as the rain – which had abated – suddenly intensified.
Rosberg pitted a lap later, but his extra lap on slicks proved costly, and he rejoined 10s in arrears of Hamilton.
Vettel moved up to third, having pitted for inters on the same lap as Hamilton, as the Williams duo were forced to stack their cars.
|6||Daniil Kvyat||Red Bull||+1:03.955||52|
|7||Nico Hulkenberg||Force India||+1:18.744||52|
|9||Sergio Perez||Force India||+Lap||51|
|12||Roberto Merhi||Marussia||+3 Laps||49|
|13||Will Stevens||Marussia||+3 Laps||49|
|14||Carlos Sainz||Toro Rosso||DNF||31|
|15||Daniel Ricciardo||Red Bull||DNF||21|
|16||Max Verstappen||Toro Rosso||DNF||3|