The victory was a landmark 70th for the Briton, who is well on his way to a fifth title and is now 21 wins behind the all-time record of 91 held by seven times champion Michael Schumacher.
Hamilton’s closest rival Sebastian Vettel finished third for Ferrari with Bottas, who led from pole position but was told to let Hamilton through after 25 of the 53 laps, securing the Mercedes one-two.
In a race with little other drama, Max Verstappen celebrated his 21st birthday in style by steering his Red Bull from the back to the front, dropping back to fifth after finally pitting with 10 laps to go.
Mercedes remain unbeaten in Russia, yesterday being their fifth win in Sochi since the Olympic Park circuit first appeared on the calendar in 2014.
Hamilton has now won eight races this season.
The Briton, who pulled off an impressive overtake on Vettel for fourth after he dropped behind the German at the pitstops, stayed in the car for some time after he parked up at the finish.
He then went over to thank Bottas and commiserate.
At the podium ceremonies, with Russian president Vladimir Putin doing the honours, Hamilton manoeuvred the Finn onto the top step alongside him.
“It’s actually quite a difficult day,” explained the Briton.
“He was a real gentleman to let me by. Usually I’d be elated but I can understand how difficult it was for Valtteri.”
The Finn, without a win this season, had asked the team over the radio, more in hope than expectation, in the closing laps whether the order might change back.
“Is this how we are going to finish the race?” he asked, before the answer came back in the affirmative.
“Valtteri this is Toto. Difficult day for you and a difficult day for us,” said team boss Toto Wolff, whose finger had been captured by the world television feed hovering over the ‘tactics’ button before the order was given.
“Let’s discuss it afterwards when we come together and we’ll explain things.”