Lewis Hamilton won a dramatic rain-hit Russian Grand Prix after Lando Norris was denied his first victory following a thrilling finale.
Norris, 21, appeared on course to keep Hamilton at bay, and become the youngest British Formula One winner.
But the race turned on its head with just eight laps remaining when the rain arrived in Sochi.
Hamilton moved to the wet tyres with four laps left but Norris stayed out on slick rubber after telling his McLaren team he did not want to stop.
However, the decision came back to haunt the young Englishman as the rain increased and he was unable to keep his McLaren on the track.
On lap 51 of 53, Hamilton assumed the lead with Norris having to stop for wets and dropping down the order.
Hamilton claimed the 100th win of his career, ahead of Max Verstappen, who drove from last to second, with Carlos Sainz completing the podium.
Norris came home in seventh.
Hamilton moves into the lead of the championship, two points clear of Verstappen with seven races remaining.
Hamilton who embraced Norris afterwards, said: “It has taken a long time to get to 100 and I wasn’t sure whether it would come.
“Lando did such an amazing job, he is doing a great job for McLaren, and it was bittersweet to see my old team ahead.
“But my team made a great call right at the end. I didn’t want to let Lando go and I didn’t know what the weather was going to do. Wow. One hundred.”
He added: “It would have been tough to get past Lando but the rain came and we were opportunistic.
“It is also a dream result for Max.”
Verstappen said: “To lose only one spot to Lewis is not bad. When I woke up this morning I didn’t expect this result.”
At the start, Norris flew away from his marks, but the young British star knew he would be vulnerable on the 350-metre charge to the first braking zone, and so it proved.
Lando Norris was quick off the mark (AP)
Sainz, benefitting from the slipstream off Norris’ McLaren, was dragged along at more than 210mph before passing his former team-mate for the lead.
Hamilton started fourth but was seventh by the end of a lacklustre opening lap. The Mercedes driver was blocked by Norris at the first corner, losing out to Daniel Ricciardo, Lance Stroll and Fernando Alonso.
Hamilton fought his way past Alonso the next time around to move up one spot before spending the remainder of the opening exchanges tucked up behind Ricciardo’s McLaren.
Up front, Norris was keeping Sainz honest, and on lap 13 he passed the Ferrari man for the lead. “Got him,” the 21-year-old said over the radio.
On lap 22, McLaren called in Ricciardo and Hamilton was released into clear air and 14 seconds adrift of Norris. Four laps later he stopped for fresh rubber before team principal Toto Wolff came on the radio to provide his superstar driver with a rallying call.
“Lewis, you can win this race,” he said.
Hamilton cleared Sainz and AlphaTauri’s Pierre Gasly before setting out to hunt down Norris. Norris stopped for his sole tyre change on lap 28 and emerged from the pits eight seconds clear of his compatriot.
With early leader Sainz now out of the picture, the stage was set for a straight shoot-out between the man chasing his maiden win and the driver bidding for a 100th career triumph.
By the start of lap 38, Hamilton could sense victory, just 1.5 seconds behind Norris’ McLaren – but the young Briton was demonstrating a level of maturity way beyond his tender years to keep Hamilton, 14 years his senior, behind.
However, the late rain changed the run of play. Ricciardo took fourth, ahead of Valtteri Bottas and Alonso.