Despite hopes that Red Bull would be able to threaten Mercedes after showing strong pace on the medium tyre long runs in practice at Barcelona, Hamilton was able to run faster at critical phases of the race to stay well clear of Verstappen.
At the start, Hamilton leapt off the line to easily hold the lead into Turn 1, while Bottas looked to have made an adequate getaway before he was quickly swamped by Verstappen and Stroll on the long run to the first corner.
Verstappen was able to sweep around the outside at the first corner and head off after Hamilton, while Stroll – having launched well from fifth on the grid and enjoyed the slipstream from the leaders on the run to the right-hander – barged his way down the inside to claim third.
Bottas had to cede the place and was nearly hit by Alex Albon's Red Bull before he was able to charge after Stroll, eventually retaking third with the help of DRS on the main straight at the start of lap five.
Hamilton had immediately moved out of DRS range of Verstappen and the gap remained stable in the early stages as the drivers quickly entered a tyre management phase, with Verstappen telling Red Bull Hamilton was driving "super slow" as a result.
But the world champion began to increase the pressure on Verstappen with a series of fastest laps after the 10th tour of 66 had been completed that opened his lead beyond four seconds.
This increased steadily towards the end of the first stint as only Hamilton was able to lap consistently in the 1m23s, with Verstappen growing vocally more frustrated by the state of his tyres before Red Bull brought him at the end of lap 21 to put on the medium tyres.
Mercedes left Hamilton and Bottas out for an extra two laps before bringing them in for a double-stack stop, with Hamilton's taking 4.3s with a slow left-rear change.
That meant the leader's advantage was cut from just over seven seconds to 4.3s by the time he rejoined, with Verstappen then able to match him in the 1m23s during the early phase of the second stint and lower the gap to just below four seconds as they took turns exchanging slightly faster times.
But in a repeat of the opening stint, Hamilton was able to pick up his pace as he dipped into the 1m22s from lap 34, with Verstappen unable to go with him
This meant that Hamilton was able to steadily extend his advantage back to what it was before his first stop and then gradually up to the 10-second mark before Red Bull called Verstappen in again on 41.
This was to protect again the threat of an undercut from Bottas, who had closed in on second place as the leaders made their way through lapping battling midfielders.
Bottas stayed for another seven laps after initially flying with a fastest lap of the race at that stage on lap 42, and came in to go onto soft tyres at the end of lap 48.
Verstappen had used his time on fresh mediums to open up a 5.8s gap over Bottas when the Finn rejoined, which got larger and the stabilised as they ran through more traffic, with move to the red-walled rubber not paying off for the Mercedes driver.
Hamilton came in on lap 50, one lap later than Mercedes had initially planned as the Briton refused to move onto the softs, preferring to stay on the mediums, and he was able to simply run clear in the lead to finish.
Hamilton came home 24.1s clear, a running over a piece of Romain Grosjean's Haas at Turn 2 late on, but this did not disturb his run to victory.
Verstappen finished 20.5s ahead of Bottas in second as Mercedes brought him for a third stop with two to run, which meant he flew to the fastest lap – a 1m18.183s – on the final tour, as looming rain clouds that appeared in the distance at the Barcelona track leaving it untouched.
Every other driver was lapped, with Sergio Perez finishing fourth on track but ending up fifth behind his teammate Lance Stroll – who completed a two-stopper to the Mexican's one-stop strategy – as Perez picked up a five-second penalty for ignoring blue flags as Hamilton lapped him.
Carlos Sainz gained a place on his grid spot to come home sixth for McLaren, as taking softs at his first stop gave him extra grip compared to his rivals that he used to good effect.
He had to pass Sebastian Vettel's one-stopping Ferrari late on, as did Stroll, with the German driver nevertheless finishing a solid seventh in front of a gaggle of cars after starting in P11 on the mediums and the keeping softs alive in his second stint.
Alex Albon had to run the hards after his first stop and came home eighth after starting sixth, with Pierre Gasly and Lando Norris chasing him home to round out the top 10.
Daniel Ricciardo's one-stopper gained him a few spots but he finished just outside the points.
Grosjean came home last after picking up damage in a late clash with Antonio Giovinazzi (who finished 16th, with his Alfa Romeo teammate Kimi Raikkonen 14th after his own moment with Grosjean on the pit straight enraged the 2007 world champion).
The Haas driver then half spun at the Turns 7-8 chicane in the final laps and took an extra stop that dropped him to 19th.
Charles Leclerc was the only non-finisher after his Ferrari power unit cut out due to a sudden electrical problem at the final chicane around half distance, which spun Leclerc, who had been battling hard with Norris.
Leclerc was able to get the power on again but he toured slowly back to the pits with loose seat belts and retired when he reached his garage.
|2||Max Verstappen||Red Bull||24.177|
|4||Lance Stroll||Racing Point|
|5||Sergio Perez||Racing Point|
|6||Carlos Sainz Jr.||McLaren|
|8||Alex Albon||Red Bull|
|14||Kimi Raikkonen||Alfa Romeo|
|16||Antonio Giovinazzi||Alfa Romeo|
|View full results|