Raikkonen pitted and rejoined to take third with Vettel - who had reported blistering after a big lock-up - falling right back to seventh as he had to drive further on his wrecked tyre.
It was Hamilton's fourth victory of the season, his fourth consecutive British GP win and fifth F1 triumph at Silverstone.
At the start, Raikkonen challenged Hamilton into the first corner, but the leader held firm and set about building an advantage.
Vettel made a slow start, slipping behind Verstappen before retaking the position only for the Red Bull driver to go back past around him on the outside at the Loop.
The race was neutralised when the safety car was deployed to clear debris after Daniil Kvyat ran wide onto the grass, lost control and hit Toro Rosso team-mate Carlos Sainz Jr.
At the restart, Hamilton pushed clear, first holding a steady gap to Raikkonen before putting the hammer down ahead of the pitstops.
Further back, Vettel put pressure on Verstappen, attacking down the inside of Stowe, only for the Red Bull to hold on around the outside.
Verstappen managed to stay ahead under braking for Vale, squeezing Vettel wide into the chicane and prompting the Ferrari driver to raise his hand in frustration.
Vettel was the first of the frontrunners to pit, with Red Bull reacting by bringing Verstappen in next time around.
But a problem with a wheelnut delayed Verstappen, meaning he rejoined behind Vettel and did not have the pace to respond.
Raikkonen pitted soon after, with Hamilton following suit on the next lap and rejoining comfortably in the lead, ahead of Bottas, who had yet to pit having run deep on softs after starting ninth following a five-place grid penalty for a gearbox change.
It wasn't until lap 33 of 51 that Mercedes called Bottas, the only driver in the top 10 to start on the softs, in for the super-softs, and he rejoined fourth.
He used the fresher, softer rubber to gradually reduce the gap to Vettel and then launched an attack on the run to Club, but the Ferrari driver locked up and kept the position.
On the next lap, Bottas was much closer to Vettel on Hangar Straight and swept around the outside of Vettel with ease before they reached Stowe.
Bottas then inherited second when Raikkonen suffered the tyre issue, with Verstappen pitting late as a precaution and rejoining in fourth, ending a run of three successive retirements.
His team-mate Daniel Ricciardo produced an impressive recovery drive to take fifth, having started 19th after a series of grid penalties for engine component and gearbox changes and dropping to last early on having run into the gravel when trying to pass Kevin Magnussen.
Renault's Nico Hulkenberg equalled his best finish of the season with sixth, losing out to Ricciardo late on, but his team-mate Jolyon Palmer failed to take the start after reporting brake-by-wire and hydraulic problems on the formation lap.
Esteban Ocon and Sergio Perez gave Force India an eighth double points finish in 10 races with eighth and ninth ahead of Felipe Massa. They had ended up in a three-way battle that developed as they queued behind the long-running Magnussen before the Haas finally pitted.
McLaren again failed to score - although Stoffel Vandoorne was not far behind Massa in 11th. Fernando Alonso retired midway through the race having got up to 14th from his back of the grid start.