Lewis Hamilton ended Ferrari's current win streak to take victory in the Russian Grand Prix – his first since the pre-summer Hungarian GP – as Mercedes took another 1-2 at the Sochi circuit.
That doesn't give the full story though as a 1-2 finish for Ferrari looked likely at the halfway point of the race after Sebastian Vettel grabbed the lead on the opening lap thanks to a tow from his Ferrari team-mate and polesitter Charles Leclerc.
The pair held first and second up until Lap 23 when Leclerc came in for his first stop – with Ferrari giving the Monegasque driver priority despite him being in second place, as a disagreement over strategy broke out between Leclerc and Vettel when the German defied orders to let Leclerc through for the lead.
By the time Vettel came in for his stop several laps later, Leclerc had opened up enough of a gap to jump his team-mate, but it came undone when an MGU-K issue hit Vettel's car just moments later, forcing him to stop, bringing out a Virtual Safety Car.
That resultant VSC allowed Hamilton and Bottas to pit, coming out in first and third respectively with Leclerc splitting the Silver Arrows.
Williams' George Russell would then crash out with a brake issue, forcing a full Safety Car which prompted Leclerc to pit for fresh tyres, ultimately costing him second place as he dropped to third and was then unable to find a way past Bottas over the course of the final 20 laps.
Hamilton managed the gap to Bottas to cross the finish line just 3.8 seconds ahead, with Leclerc trailing the Finn by 1.3s.
Max Verstappen fought through from ninth after his grid penalty to finish fourth ahead of team-mate Alexander Albon, himself starting from the pitlane, to complete a good recovery race for the Red Bull team.
McLaren's Carlos Sainz, who challenged for third at the start, finished sixth as he was unable to hold Albon off in the final laps. Racing Point's Sergio Perez split the McLarens in seventh, with Lando Norris claiming eighth ahead of Haas' Kevin Magnussen.
Nico Hulkenberg completed the points in tenth for Renault.
An opening lap clash involving Romain Grosjean, Daniel Ricciardo and Antonio Giovinazzi forced an early Safety Car and the retirement of the second Haas, with Ricciardo taking on a puncture. He would go on to retire several laps later.