Silverstone: Lewis Hamilton wins thrilling British Grand Prix
An ecstatic Hamilton paid tribute to the record 140,000 crowd at Silverstone.
"I am so happy with that - thank you to all the fans for coming - that one was for you," he said over the team radio before performing doughnuts for his British support.
Hamilton and the partisan home crowd had been left stunned when Massa, who started third, and team-mate Bottas leapfrogged both the pole-sitter and Rosberg off the start-line.
Hamilton promptly drew alongside Bottas taking second place back off the Finn at turn three before the safety car was deployed.
The opening-lap incident had involved the hapless Jenson Button who was making his 16th, and quite probably, final appearance at the British Grand Prix.
Lotus driver Romain Grosjean collided with his team-mate Pastor Maldonado, and in trying to escape the accident, Fernando Alonso lost the rear of his McLaren and inadvertently crashed into the side of his team-mate.
"He didn't turn into me," Button, who has now failed to finish three consecutive races, said. "He lost the rear when he was trying to escape an incident and his front was coming around but I didn't know he was spinning, he hit the rear tyre, the car jumped and came down aggressively and everything switched off."
Alonso pitted for a new front wing and rejoined the track in last place.
When the safety car came in at the end of lap three, Hamilton attempted to pass Massa for the lead, but he lost control of his Mercedes under braking allowing Bottas to reclaim second place. This wasn't in the script.
Max Verstappen then spun at high-speed, and ended up in the gravel. His race was over. By the end of lap four we had seen five retirements in the most dramatic start to a race this season.
Up front, Massa led from Bottas, but the Finn was visibly faster than his team-mate without finding a way through.
Bottas was told not to race Massa before Williams reversed their decision and allowed the two to battle for the race lead. On lap 12, the top four of Massa, Bottas, Hamilton and Rosberg were separated by just 1.8 seconds.
Seven laps later, Hamilton was the first of the leaders to pit for a fresh set of slicks, and it turned out to be an inspired decision. The world champion was stationary for only 2.4secs.
Massa and Rosberg pitted a lap later, but while the Williams driver narrowly stayed ahead of the German, the pair emerged the best part of three seconds behind Hamilton.
Bottas stopped one lap later to allow Hamilton to take the lead of the race. In doing so Hamilton broke Sir Jackie Stewart's 45-year record of leading 17 consecutive grands prix. Bottas meanwhile, emerged ahead of Rosberg to leave the Mercedes driver in fourth.
By the end of lap 31, Hamilton's lead over Massa was up to five seconds as the threat of rain lingered in the Northamptonshire air. Five laps later the wet stuff arrived.
A light shower played havoc through Luffield and Woodcote, and Rosberg appeared to relish the conditions. On lap 39, he swooped past Bottas, and two laps later he overtook Massa to move up to second.
Within four laps he had taken seven seconds out of Hamilton's lead before Mercedes pulled Hamilton in for a change to intermediate tyres as a second, much heavier, rain shower hit.
It seemed like the wrong decision at first, but as the rain continued to fall, Rosberg was forced to pit, too. Hamilton resumed the lead with Rosberg exiting the pit-lane in second, nine seconds adrift of his team-mate.
Vettel, who pitted for intermediate tyres on the same lap as Hamilton, moved ahead of the Williams duo of Massa and Bottas, as the pair stopped at the same time, to claim the final step on the podium.
With Hamilton leading from Rosberg and Vettel in third, normal order was resumed, despite the inclement conditions.
Meanwhile, Fernando Alonso claimed his first points finish of the season as he ended the race in 10th. Only 12 drivers were classified.