Hamilton completed two practice starts on his reconnaissance laps to the grid at Sochi including one towards the end of the pitlane exit, which was against the instructions issued in the pre-event race director’s notes issued by the FIA’s Michael Masi.
The world champion therefore went into the race under investigation, with the ruling issued during the first stint as he tried to defend his position on the unfancied soft tyres ahead of Bottas and Verstappen on their medium rubber.
At the start, Hamilton led away from pole as Bottas immediately moved past Verstappen on the run through the kink of Turn 1, with the polesitter then moving to defend the inside of the braking zone for Turn 2.
Bottas attacked around the outside and briefly got his nose ahead, but his momentum carried him over the kerbs on the outside and he had to catch a brief slide moving over the kerbs, which allowed Hamilton to retake the lead running through the long left of Turn 3.
Verstappen was among several drivers who cut the runoff at Turn 2 and he was passed by Daniel Ricciardo going into the right of Turn 4, but he immediately retook the position at the next right-hander, with Ricciardo then losing fourth to his teammate Esteban Ocon as he slid out of Turn 7.
But the race was then suspended as Carlos Sainz had crashed following Verstappen through the mandated path to rejoin the track into Turn 3, with the McLaren hitting the wall on the outside of the marker boards hard with its left front and the wreckage sliding back across the track, forcing several drivers to check up.
A few moments later, Charles Leclerc clipped Lance Stroll with his left front as they exited Turn 4 and the Racing Point was pitched into the wall and out of the race, with the safety car deployed shortly afterwards.
The race restarted on lap six of 53, with Hamilton easily keeping hold of the lead as the there was little drama when the safety car pulled in and the drivers roared back to full speed.
Over the first stint, Hamilton and Bottas exchanged quicker times in the low 1m41s and high 1m40s, but the world champion was slowly able to extend his lead.
But the news soon came that he was being handed a pair of five-second penalties for his pre-race infraction, which meant he had to wait 10s before Mercedes could service his car at his first stop.
Hamilton came in on lap 16, two laps after telling Mercedes not to bring him in as he set a pair of fastest laps in the 1m39s, where he had had a lead of 2.7s.
He rejoined just outside the top 10, but crucially ahead of Riccardo, who had pitted a few laps earlier and was an undercut threat that Mercedes had to cover – much to its driver's frustration.
Bottas immediately upped his pace with a string of fastest laps in the low 1m39s, as he brought his medium tyre advantage to bear and edged away from Verstappen – who was also setting a series of personal bests, albeit a chunk slower than the Mercedes each lap.
Mercedes kept Bottas out until lap 26, one lap after Verstappen had come in to exchange his mediums for hards, and once the leader had taken his own white-walled tyres, he emerged with a lead of 9.7s over the Red Bull, with Hamilton 15.4s adrift of P1.
The top three were now considerably spread out, and the gaps got larger through the opening laps of the second stint, with Bottas quickly extending his lead above 12s, while Hamilton dropped back to over 10s behind Verstappen.
A then fastest lap on the 35th tour helped Bottas extend his lead up to 13.1s, but as he adjusted his pace again Verstappen was able to close that down bit by bit, with the Finn remaining comfortable in the lead.
It came down to 5.5s at the end of lap 50 as Bottas controlled his pace and then had to negotiate traffic, with Verstappen having to do the same in the final laps.
The two leaders exchanged fastest laps on the final tours, with Bottas claiming the extra point and then coming home 7.7s clear.
Hamilton remained around 10s behind Verstappen for most of the closing laps, but faded further at the very end and finished 15.0s behind the Red Bull.
Sergio Perez, who had fallen behind the Renaults at the start, finished fourth after taking advantage of Ocon and Ricciardo getting stuck behind Sebastian Vettel after their early stops, and he came home by himself, 7.8s behind Hamilton.
Ricciardo finished fifth despite getting a five-second time penalty for cutting over the Turn 2 kerbs when being allowed by Ocon to attack, and then pass, Vettel in the middle phase of the race.
The Australian was able to create a gap large enough to remain ahead of Charles Leclerc once the penalty had been applied, with the Ferrari driver jumping up the order from 10th on the grid after completing a long first stint on the mediums – at one point running as high as second before he stopped for the hards.
Ocon came home seventh, just ahead of Daniil Kvyat, who had completed a similar strategy to Leclerc but starting on the hards, with Pierre Gasly leading home Alex Albon, who had stopped under the safety car.
Both Gasly and Albon completed two stoppers and enjoyed a lively scrap with Lando Norris – who finished down in 15th after taking his own second stop late on having pitted with Albon at the start – in the closing stages.
Albon was another driver to get a five-second penalty for cutting the Turn 2 runoff and not respecting the bollards – which were destroyed at one stage when Romain Grosjean went through them, causing a brief virtual safety car so the broken boards could be moved.
But Albon had enough time in hand over Antonio Giovinazzi to remain P10.
|2||Max Verstappen||Red Bull||Honda||7.729|
|4||Sergio Perez||Racing Point||Mercedes||30.558|
|10||Alex Albon||Red Bull||Honda||1'37.860|
|11||Antonio Giovinazzi||Alfa Romeo||Ferrari||1 lap|
|12||Kevin Magnussen||Haas||Ferrari||1 lap|
|13||Sebastian Vettel||Ferrari||Ferrari||1 lap|
|14||Kimi Raikkonen||Alfa Romeo||Ferrari||1 lap|
|15||Lando Norris||McLaren||Renault||1 lap|
|16||Nicholas Latifi||Williams||Mercedes||1 lap|
|17||Romain Grosjean||Haas||Ferrari||1 lap|
|18||George Russell||Williams||Mercedes||1 lap|
|19||Carlos Sainz Jr.||McLaren||Renault|
|20||Lance Stroll||Racing Point||Mercedes|
|View full results|