Valtteri Bottas took full advantage of a troubled day for his Mercedes team-mate Lewis Hamilton to claim the ninth win of his career with a measured drive to victory in Sunday's incident-packed Russian Grand Prix.
The Finn swooped to take second place at the start and inherited the lead when the runaway series leader and six-time champion took an extended pit-stop to serve two five-second penalties for irregular pre-race practice starts.
A disgruntled Hamilton, aiming to win and equal Michael Schumacher's record of 91 Grand Prix triumphs, re-joined in 11th place, but fought back to finish third behind Bottas and Red Bull's Max Verstappen.
His second win in Russia and second this season reinvigorated Bottas' challenge for the drivers' title and reduced Hamilton's lead to 44 points.
Sergio Perez came home fourth for Racing Point ahead of Renault's Daniel Ricciardo, who had to take a five second penalty for an infringement, and Charles Leclerc, who was sixth for Ferrari.
Esteban Ocon was seventh for Renault ahead of local hero Daniil Kvyat and his Alpha Tauri team-mate Pierre Gasly and Alex Albon, who was also given a five-second penalty, in the second Red Bull.
Hamilton did not want to talk about his penalty.
"It doesn't matter. It's done now. I'll take the points and move on, but congratulations to Valtteri.
"A big thank-you to the fans here this weekend - spasibo," he said. "It's not the greatest day, but it is what it is..."
Bottas said: "It's very nice to get a win. It's been a while! I need to try and keep the momentum. I've 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."
Verstappen said: "We split the Mercedes again so that is good — and we can be happy with that."
All three drivers wore their racing overalls on the podium after the race, obeying the latest revised rules from the sport's ruling body not to wear any items carrying 'political' messages.
Hamilton had made a solid start from his record 96th pole and fended off the slipstreaming Bottas, who had passed Verstappen's Red Bull.
'This is ridiculous!'
The Dutchman, recovering from a ragged getaway, ran off-line to defend against a rapid Ricciardo before two first lap crashes behind them ended the early action and brought out the Safety Car.
McLaren's Carlos Sainz hit a wall in the run-off area at Turn Two after losing control before Racing Point's Lance Stroll was nudged from behind by Leclerc and spun into the barriers.
Sainz almost collected several other cars including team-mate Norris who managed to avert a collision, but felt he suffered some damage.
The action resumed on lap six, when Hamilton's penalties were announced.
"What happened? What happened?" he responded on team radio. "Those starts, going to the grid, we got five seconds for each — out of position," he was told.
"Where is that in the rule book?" said a disgruntled Hamilton. "Anything to slow me down, but it's ok. I can take it."
Hamilton was also given two more penalty points on his racing licence and, with a total of 10 in 12 months, moved within two of an automatic one-race ban.
He reacted by pushing to open a 2.5 seconds lead on Bottas before pitting on lap 17 for hard tyres and his combined 10-seconds penalty.
"This is ridiculous, man," said a disgruntled Hamilton before re-joining 11th.
At the front, Bottas reeled off fastest laps to open a clear lead before pitting on lap 27, retaining his advantage ahead of Leclerc's Ferrari with Verstappen, having pitted earlier in third.
By lap 32, Bottas was in command with a 12 seconds lead over Verstappen and Hamilton up to third after slicing through the field, many of whom had pitted.
The charge had given entertainment to the 30,000 spectators, the first significant crowd at a sports event in the Covid-19 era.
With 20 laps to go, he was 22 seconds behind Bottas and 10 off the Dutchman, but his prospects of a 91st win on Russian soil had gone.
The other record-chaser Kimi Raikkonen finished 14th for Alfa Romeo on the day when he equalled Rubens Barrichello record of 322 race starts.