Daniel Ricciardo survived a reliability scare to hold off Sebastian Vettel and take his second win of the 2018 Formula 1 season in the Monaco Grand Prix.
Ricciardo was comfortably in charge early on before an apparent energy recovery systems problem took hold for the majority of the race.
He managed that loss of power to the end to clinch his seventh GP victory, with Vettel dropping back in second late on and Lewis Hamilton's Mercedes a distant third.
Ricciardo covered Vettel into the first corner and had built a lead of 3.6 seconds before the leaders pitted to shed their used hypersofts from qualifying.
Vettel stopped on lap 16 of 78 with Ricciardo staying out a lap later and rejoining with a lead still above three seconds.
Ricciardo then started to report a loss of power and Vettel closed in.
Red Bull indicated the problem would not get worse and Ricciardo was able to maintain the lead, albeit at a reduced pace.
That allowed Vettel to run just over a second behind him, with Hamilton gradually closing in and putting the top three within three seconds of each other.
Hamilton was complaining more about the state of his tyres and gradually slipped back to a lonely third.
Ricciardo's loss of pace meant Kimi Raikkonen and Valtteri Bottas threatened to stop privately duelling over fourth and join the lead train, but never quite managed to do so.
Bottas had briefly threatened to be a dark horse after taking supersofts at his only pitstop while the top four went on ultrasofts, and was considerably faster in clean air.
His charge ended as soon as he caught Raikkonen and found himself stuck behind the Ferrari, and although they closed right up on Hamilton at the end they held position.
Esteban Ocon just held on to finish best-of-the-rest for Force India.
Ocon pitted later than most frontrunners but not as late as Pierre Gasly and Nico Hulkenberg, who ran exceptionally long opening stints and had fierce pace in the second half of the race.
Toro Rosso driver Gasly had supersofts to the hypersofts on Hulkenberg's Renault, but just about managed to keep seventh place as Ocon kept the pair at bay.
Max Verstappen scored points after his crash on Saturday condemned him to a back-of-the-grid start.
The Red Bull drove gradually rose up the order and finished ninth after wresting the place from Carlos Sainz Jr with a forceful move at the Nouvelle chicane.
Sainz survived one attack there by cutting the chicane, but a lap later Verstappen made it stick on the outside - he ran slightly deep into the corner and half-cut it, half-clobbered the kerb on the first right-hand apex, but kept the place.
A tame conclusion was interrupted by Charles Leclerc rear-ending Brendon Hartley under braking for the Nouvelle chicane with seven laps to go.
Hartley was running 11th with Leclerc just behind when the Sauber rookie smashed into the rear of the Toro Rosso shortly after exiting the tunnel.
Leclerc, who reported "no brakes" immediately afterwards, skated down the escape road with the front of his car deranged, while Hartley limped back to retire in the pits with a broken rear wing.
That triggered a virtual safety car, but with so little time remaining the frontrunners did not risk pitting and the order remained the same, albeit with Vettel falling further back from Ricciardo.
Fernando Alonso was the race's other retiree. The Spaniard was on course to finish seventh until he was forced to retire his McLaren, which was smoking at the rear as he came to a halt on the exit of Ste Devote with 25 laps left.
|1||Daniel Ricciardo||Red Bull/Renault||78||1h42m54.807s|
|6||Esteban Ocon||Force India/Mercedes||78||23.667s|
|7||Pierre Gasly||Toro Rosso/Honda||78||24.331s|
|9||Max Verstappen||Red Bull/Renault||78||25.317s|
|10||Carlos Sainz Jr.||Renault||78||1m09.013s|
|12||Sergio Perez||Force India/Mercedes||78||1m10.461s|
|14||Stoffel Vandoorne||McLaren/Renault||77||1 Lap|
|15||Romain Grosjean||Haas/Ferrari||77||1 Lap|
|16||Sergey Sirotkin||Williams/Mercedes||77||1 Lap|
|17||Lance Stroll||Williams/Mercedes||76||2 Laps|
|19||Brendon Hartley||Toro Rosso/Honda||70||Collision|
|9||Carlos Sainz Jr.||20|