Hamilton was penalized for performing practice starts outside his designated area as he left the pits.
Bottas, who started third in Sochi, moved into second position on the opening lap and led after Hamilton served his penalties after pitting on the 17th lap.
The Finnish driver finished just under eight seconds clear of Max Verstappen in second while Hamilton fought back to finish in third.
And although he closed the gap with his Mercedes teammate Hamilton at the top of the 2020 driver’s championship to 44 points, Bottas’ start to the race was affected by the wildlife of the area.
“The start was going to be the first opportunity – actually it was a bit compromised because there was a massive bee, or something, that hit my visor, so I couldn’t really see where I should brake, so that’s why I went too deep,” he said afterwards.
“I knew it was going to be a long race. That, and with the medium tire I had, with the opportunities – Lewis had the penalties – so once I was in clean air, I felt the pace was pretty awesome and I could really control everything.
“I wasn’t concerned (about Verstappen) because I knew how many opportunities there would be. Never give up, it’s been a good day.”
‘It’s done now’
Having claimed the record-extending 96th pole position of his career, the race was set up for Hamilton to attempt to claim his 91st F1 win and equal Michael Schumacher’s record of career victories.
But shortly after the opening lap – in which both Carlos Sainz and Lance Stroll crashed out in separate incidents – it was announced that Hamilton had been handed two five-second penalties for practice start infringements and would be enforced on the next pit stop.
After going against team instructions telling him to pit, the British driver eventually changed his tires and served his cumulative 10-second penalty in the 17th lap.
“This is just ridiculous, man,” Hamilton complained to his team after serving his penalty and rejoining the race in 11th position.
And while he raced valiantly to recover a spot on the podium, it wasn’t quite enough to draw level with Schumacher, finishing over 22 seconds behind his teammate Bottas at the Sochi Autodrom.
“Just not the greatest day. It is what it is. It’s done now,” the six-time world champion said. “I take the points that I got and move on.
When asked about the penalties post-race, Hamilton was reluctant to comment. “It doesn’t matter. It’s done now so I’ll take the points and move on, but congratulations go to Valtteri,” he said.
The 35-year-old also had one penalty point added to his record for each incident. This takes Hamilton to 10 points for a 12-month period, leaving him just two penalty points away from a one-race ban.
For Bottas, it was clean sailing following Hamilton’s penalty as the 31-year-old went on to claim the ninth win of his F1 career.
“It’s nice to get a win. It’s been a while and I need to try and keep the momentum. Again, managed to squeeze a few points over Lewis, but there’s still quite a few races to go, so you never know. I’ll keep pushing, I won’t give up and we’ll see how it ends up.”
Verstappen’s second-place finish further solidifies his third position in the driver’s championship. And the 22-year-old admitted he was “very happy” with his final position.
“After the restart I think we were a little bit slow on the medium, but once we went onto the hard tire, I think we were a little bit more competitive, so happy about that. To be able to split the Mercedes cars again, I think we can be pleased with that.
“I was just trying do my own race. I think we did everything well, and I’m very happy with second.”
The 2020 F1 season will continue on October 9-11 at the Eifel GP, which is held on the renowned Nürburgring in Germany.