Hamilton, who started on pole position in Sochi hoping for a 91st Formula One victory to equal Ferrari great Michael Schumacher's all-time record, finished third behind Red Bull's Max Verstappen
Valtteri Bottas won the Russian Grand Prix for Mercedes on Sunday after team mate and championship leader Lewis Hamilton collected two time penalties for infringements before the race had even started.
Hamilton, who started on pole position in Sochi hoping for a 91st Formula One victory to equal Ferrari great Michael Schumacher's all-time record, finished third behind Red Bull's Max Verstappen.
The Briton's lead over Bottas shrunk to a still healthy 44 points after 10 of 17 races, with the Finn collecting a bonus point for fastest lap.
"Never give up. It's a good day," said Bottas, who addressed his critics in more basic terms over the team radio as he took the chequered flag.
"It's nice to get a win, it's been a while and I need to try and keep the momentum...there's still quite a few races to go, so you never know. I'll keep pushing, I wont give up and we'll see how it ends up."
The win was the Finn's second of the season, and first since the Austrian opener in July.
Hamilton's hopes were dashed when stewards issued two five-second penalties for making practice starts outside the designated area as he headed to the grid.
"Not the greatest day...I take the points that I got and move on," said Hamilton, who also collected two penalty points on his licence that leave him just two away from a one-race ban.
Dominant Mercedes continued their record of winning every Russian Grand Prix since the first held at the 2014 Winter Olympics venue.
A look back at the time penalties incurred by polesitter Lewis Hamilton before lights out - which ended up changing the complexion of the Russian Grand Prix#RussianGP 🇷🇺 #F1 pic.twitter.com/3EZ43De2UB— Formula 1 (@F1) September 27, 2020
Mexican Sergio Perez was fourth for Racing Point with Australian Daniel Ricciardo fifth for Renault and Charles Leclerc sixth for Ferrari.
Frenchman Esteban Ocon took seventh for Renault with Russian driver Daniil Kvyat pleasing the biggest crowd of the season, and first of any size since the start of the COVID-19 pandemic, finishing eighth.
AlphaTauri team mate Pierre Gasly was ninth and Red Bull's Alexander Albon took the final point in 10th.