Lewis Hamilton clinched his first Formula 1 victory of the 2016 season after pitstop heartbreak for Daniel Ricciardo in a thrilling rain-hit Monaco Grand Prix.
The reigning world champion's Mercedes finished seven seconds clear of polesitter Ricciardo in the Red Bull with Force India's Sergio Perez completing the podium.
Overnight rain continued throughout the morning in Monaco with conditions sufficiently treacherous that the race was started under the safety car for the first time in its history.
After seven laps, the safety car was called in - a few laps after Hamilton had said on team radio that conditions were good enough to get under way - and Ricciardo pulled away in the lead, ahead of Nico Rosberg and Hamilton.
It became clear Hamilton was the faster of the two Mercedes, with Rosberg struggling with brake temperatures, so the team instructed the German to let Hamilton past.
Hamilton set off in chase of Ricciardo and although the track was drying out, he chose to stay out on full wets when Ricciardo pitted for intermediates and therefore inherited the lead.
Ricciardo caught Hamilton quickly and retook the lead when the Mercedes pitted for the ultra-soft at the end of lap 31 of 78.
The Australian pitted next time around, but a miscommunication meant the tyres were not ready when he reached the pitbox.
Eventually, the team fitted super-softs and got him out, but as he exited the pits Hamilton swept around the outside to retake the lead.
Ricciardo closed on Hamilton as they went through the tunnel with the Mercedes cutting the chicane and then bullishly blocking his rival as he came under attack on the outside on the run to Tabac.
Ricciardo waved his hand in frustration but the stewards decided to take no further action after investigating the incident.
Hamilton then absorbed pressure from Ricciardo to keep the lead and secure his 44th career victory and first since he clinched his third world title in last year's United States GP.
Perez jumped to third with well-timed tyre changes and then resisted heavy pressure from Sebastian Vettel's Ferrari to give Force India its first podium of 2016.
Vettel's team-mate Kimi Raikkonen retired early on when he crashed at Loews, blocking Romain Grosjean as he tried to rejoin and then pulling off at the exit of the tunnel with his front wing lodged underneath the car.
Fernando Alonso finished a brilliant fifth place with Nico Hulkenberg stealing sixth off a low-key Rosberg on the final lap.
That means Hamilton has cut the gap to Rosberg in the championship to 24 points.
Carlos Sainz Jr, Jenson Button and Felipe Massa completed the top 10.
Sauber asked Felipe Nasr to cede position to team-mate Marcus Ericsson but the Brazilian questioned the decision.
Ericsson then tried a move at Rascasse and the two cars collided, resulting in both retiring soon afterwards.
Max Verstappen, winner of the previous race in Spain, fought his way up into the points after starting from the pitlane but crashed at Massenet - his third crash of the weekend.
It was a tough race for Renault with Jolyon Palmer crashing when he lost grip on the pits straight kink as the race began and Kevin Magnussen hitting the barrier at Mirabeau.
Magnussen had previously collided with Daniil Kvyat at Rascasse, with Kvyat later retiring, having been a lap down after suffering a problem with his steering wheel at the start.
RESULTS - 78 LAPS:
|2||Daniel Ricciardo||Red Bull/Renault||7.252s|
|3||Sergio Perez||Force India/Mercedes||13.825s|
|6||Nico Hulkenberg||Force India/Mercedes||1m32.999s|
|8||Carlos Sainz||Toro Rosso/Ferrari||1 Lap|
|9||Jenson Button||McLaren/Honda||1 Lap|
|10||Felipe Massa||Williams/Mercedes||1 Lap|
|11||Esteban Gutierrez||Haas/Ferrari||1 Lap|
|12||Valtteri Bottas||Williams/Mercedes||1 Lap|
|13||Romain Grosjean||Haas/Ferrari||2 Laps|
|14||Pascal Wehrlein||Manor/Mercedes||2 Laps|
|15||Rio Haryanto||Manor/Mercedes||4 Laps|
|-||Max Verstappen||Red Bull/Renault||Spun off|
|-||Kevin Magnussen||Renault||Spun off|
|-||Daniil Kvyat||Toro Rosso/Ferrari||Collision|
|-||Kimi Raikkonen||Ferrari||Spun off|
|-||Jolyon Palmer||Renault||Spun off|