Valtteri Bottas won the Russian Grand Prix for Mercedes after team mate and Formula One championship leader Lewis Hamilton picked up time penalties for infringements before the race had even started.
Hamilton, who had started on pole position in Sochi hoping for a 91st victory to equal Ferrari great Michael Schumacher's all-time record, finished third behind Red Bull's Max Verstappen.
He accused stewards of trying to stop him winning and said the "ridiculous" sanctions were excessive but to be expected: "They're trying to stop me, aren't they?" the Briton told Sky Sports television.
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 won't give up and we'll see how it ends up."
The win -- by 7.729 seconds -- was the Finn's second of the season, and first since the Austrian opener in July.
Bottas said he had been lucky but he might have won anyway, with Hamilton starting on the higher-wearing softs after a fraught qualifying while the Finn was on the mediums -- the better long-term strategy.
Hamilton's hopes were in any case dashed when stewards issued two five-second penalties for making practice starts outside the designated area as he headed to the grid.
In a dull race after two exciting rounds in Italy, with lonely races for the top three, Mercedes continued their record of winning every Russian Grand Prix since the first held on the streets around the 2014 Winter Olympics venue.
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 eighth and pleasing the first real crowd of the season after the first eight races were held behind closed doors due to the COVID-19 pandemic.
AlphaTauri team mate Pierre Gasly, a surprise winner at Monza, was ninth and Red Bull's Alexander Albon took the final point in 10th.
The safety car was deployed for four laps after the start when McLaren's Carlos Sainz went off and misjudged his return to the track, hitting the wall hard.
Leclerc also tagged Lance Stroll's Racing Point, with the Canadian spinning out.
Hamilton served his two penalties at the same time, returning in 11th place but moving up to third after others pitted. "This is just ridiculous, man," he said over the radio.
Hamilton accused stewards of trying to stop him winning by imposing the penalties.
Asked if the punishment seemed excessive, he told Sky Sports television: "Of course it is. But it's to be expected. They're trying to stop me, aren't they?"
"But it's OK. I just need to keep my head down and stay focused and we'll see what happens."
Hamilton said he would need to check the rules after being punished for practice starts outside of the designated area on his way to the grid.
"I'm pretty sure no-one's got two five-second penalties for something so ridiculous before," he added.
"I didn't put anyone in danger. I've done this at a million tracks over the years and never been questioned on it. So it is what it is."
The stewards also handed Hamilton two penalty points, leaving him two short of incurring a mandatory one-race ban triggered by 12 in a 12-month period.
He is not due to drop any points until after the Turkish Grand Prix in November, with three more races before then.
Asked whether he really felt targeted, Hamilton told reporters any team running at the front came under a lot of scrutiny.
"Everything we have on our car is being checked and triple-checked. They are changing rules, such as the engine regs, lots of things to get in the way to keep the racing exciting, I assume."
Hamilton said the stewards were handing out too many penalty points.
"It's ridiculous the points they have been giving people this year in general," he said. "I'll just make sure I'm squeaky clean moving forwards, don't give them an excuse for anything."
The Briton received four at the Austrian Grand Prix weekend in July for ignoring yellow flags in qualifying and a race incident with Red Bull's Alexander Albon.
There were also two for entering the Italian Grand Prix pitlane after it had closed. The other two date from last year's Brazilian Grand Prix.
Frenchman Romain Grosjean, in 2012, was the last F1 driver to serve a ban.