The victory was a landmark 70th for the Briton, whose fifth title now looks only a matter of time and who is 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 started from pole position and was told to let Hamilton through after 25 of the 53 laps, securing the Mercedes one-two.
“It doesn’t feel great. Naturally, Valtteri has been an incredible team player today,” said Hamilton after one of his more controversial wins.
In a race with little real 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, Sunday 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 would not have been able to switch places with Bottas had he not pulled off a slick overtake on Vettel after dropping behind 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 honors, Hamilton maneuvered 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.”