The world champion saw off the threat of early leaders Williams, and then made an inspired pit call when rain hit late in the race to ensure victory over Mercedes team mate Nico Rosberg and the Ferrari of Sebastian Vettel.
It was Felipe Massa and Valtteri Bottas who burst through from the second row at the start to head Hamilton and Rosberg.
After an early safety-car intervention following a collision involving the Lotuses and McLarens, Hamilton tried to pass Massa for the lead but instead lost a position to Bottas, and the Finn put the Brazilian under real pressure. Hamilton hung on to them and Rosberg kept a watching brief.
Hamilton pitted first for Pirelli’s hard tyres, on the 19th lap, and by the time Massa and Rosberg did likewise on the 20th, the world champion was in the lead. Bottas stopped on the 21st, but as Massa just jumped him as the Finn emerged from the pits, Rosberg couldn’t make it stick and thus lost more time as the three of them battled more than three seconds adrift of the leader.
At that stage it still seemed that Williams were set to take home a big points score against Ferrari, for whom Kimi Raikkonen and Sebastian Vettel were wallowing down in fifth and sixth places after poor opening laps. But even as Hamilton continued to pull clear and Massa safeguarded himself against attack from his team mate, the rain clouds were gathering.
Just before the rain arrived Carlos Sainz pulled off on the exit to Club with mechanical problems on his Toro Rosso, which joined the sister car Max Verstappen had spun into retirement earlier. Under the Virtual Safety Car which was deployed between laps 34 and 35, Hamilton lost a few tenths, but Rosberg gained on the William drivers. Then, as the track went clear, the rain came on the 35th lap.
To begin with, it was a gamble: stay on slick tyres and brave it out, or pit for intermediates. It was only wet round Luffield, Woodcote and Copse, so most stayed out, but Ferrari brought Raikkonen in too soon, on lap 38. Meanwhile, Rosberg slithered by both Williamses as Hamilton stayed out on slicks but felt his front tyres losing temperature. Rosberg had closed dramatically to within 3.7s and was beginning to fancy his chances, when Hamilton abruptly swept into the pits for intermediates on lap 43. Vettel did the same and their choices - which some initially thought premature - proved inspired. By the time Rosberg had done likewise on lap 44, together with the Williams duo, the identity of the winner was fully established.
Over the final laps Hamilton extended his lead over his team mate, but Massa had dropped to fourth behind Vettel and Bottas fell further and further behind him on a day of what might have been for Williams. By the flag he was a mere 0.3s ahead of a charging Daniil Kvyat, who gave Red Bull some much-needed cheer on a day when Daniel Ricciardo joined Button, Romain Grosjean, Pastor Maldonado, Verstappen and Sainz on the sidelines. Felipe Nasr didn’t even get to start his Sauber, after it stuck in sixth gear at Stowe on the grid formation lap.
Nico Hulkenberg should have done better than his eventual seventh, but lost places to Raikkonen, Vettel and Kvyat in his pit stop on the 23rd lap. But Force India saw Sergio Perez finish ninth, so it wasn’t a disaster for the local team.
Raikkonen needed another stop for fresh intermediates before the finish, so came home only eighth, as Fernando Alonso scored his first point of the season with 10th for McLaren.
After four pit stops Marcus Ericsson was 11th for Sauber as Roberto Merhi headed Marussia team mate Will Stevens home after the Briton had spun in the rain and lost his front wing on the 47th lap.
The delighted Hamilton now has 194 points to Rosberg’s 177, with Vettel third on 135. Mercedes have 371 points to Ferrari’s 211 and Williams’ 151.