The chaotic end meant Bottas dropped from second to 11th, while Hamilton, whose tire trouble came on the final lap, held on to cross the line five seconds ahead of a chasing Max Verstappen.
Bottas’ late woes meant Ferrari’s Charles Leclerc completed the podium.
It was Hamilton’s third consecutive victory following a delayed start to the season amid the coronavirus pandemic and sees him move 30 points clear at the top of the championship.
“The last few laps I started to back off and then down the straight (the tire) just deflated,” Hamilton said after the race.
“I just noticed the shape shift a little bit and that was definitely a heart-in-the-mouth kind of feeling … I was just praying and trying to get it round and not be too slow.
“I nearly didn’t get round the last two corners but there you go, we did it and I really owe it to the team.
“I’ve definitely never experienced anything like that on a last lap. My heart definitely nearly stopped.”
Hamilton, Bottas and Verstappen had occupied the front three positions on the grid and were unscathed for much of the race before the late drama.
Had Verstappen not pitted before the final lap, he would likely have taken the win from Hamilton. “It’s lucky and unlucky,” said Verstappen as he reflected on catching one Mercedes but not the other.
“They were too quick in the race. The tires at one point didn’t look great with 10 laps to go so I was already on the radio … then of course they boxed me to go for the fastest lap.
“I’m very happy with second, it’s a very good result for us.”
The safety car was called upon again in the opening stages when AlphaTauri’s Daniil Kvyat crashed heavily on lap 12. Fortunately, the Russian walked away from his car and appeared unharmed.
While drivers vied for positions in the middle of the grid, Hamilton was unchallenged at the front ahead of Bottas and Verstappen.
But late tire trouble for several drivers — like Bottas, Renault’s Carlos Sainz also dropped back after tire issues — will give teams plenty of food for thought when racing returns to Silverstone next weekend.
It’s the second time this season’s abridged championship has visited the same circuit on consecutive weekends after the opening races in Austria.
The victory means Hamilton, who was also victorious in Austria and Hungary, takes another small step towards Michael Schumacher’s record of seven championship titles with 10 races remaining.
While he leads the driver’s standings on 88 points, Bottas stays second on 58 points, six ahead of Verstappen.