Cape Town - Daniel Ricciardo redressed the balance in Monaco as he turned pole position into that illusive first Monte Carlo win, made to work for it by an engine issue.
Two years ago Ricciardo was shattered when a botched pit stop cost him an almost-sure victory in Monaco. This year there were no such mistakes but there was an engine problem that cost him power down the straights.
The Aussie continued his trend of maintaining his start position through the opening lap as he led off the line, fending off Sebastian Vettel and Lewis Hamilton.
Hamilton was the first of the frontrunners to pit, coming in on lap 12 to swap his hypersoft Pirellis for a set of ultrasoft tyres. He came out behind Esteban Ocon in sixth but passed the Force India three laps later.
Vettel came in from second place on lap 16, four seconds down on Ricciardo at the time, and re-emerged in third, ahead of Bottas, who had yet to pit, and Hamilton.
Ricciardo was in a lap later, swapping his hypers for ultras. He returned to the track in the lead as Raikkonen pitted with Bottas also coming in.
After the stops the top five were: Ricciardo by 2.8s over Vettel followed by Hamilton, Raikkonen and Bottas. The latter was on a set of supersoft tyres to his rivals' ultrasofts.
Whether through baby sitting tyres or less pace than Ferrari, Vettel began to eat into Ricciardo's lead and cut the gap to 1.4s before the Aussie began to build it up again. "Looking after the tyres" was the message from Red Bull.
Drama hit Ricciardo on lap 28 as he reported "losing power" and Vettel closed up on his rear wing.
Meanwhile Raikkonen sat on Hamilton's tail while Bottas, having been almost six seconds down, closed up on the Ferrari. The trio, fighting for P3, were separated by less than three second.
Ricciardo continued to lead the grand prix while Vettel complained about a "blackout on the dash" and Hamilton was rather vocal about his tyre issues. Despite the latter's troubles he began to close the gap to Vettel who in turn got within a second of Ricciardo.
Fernando Alonso became the race's first as he parked his McLaren at Sainte Devote on lap 53 with a gearbox problem.The final 20 laps saw Ricciardo, Vettel and Hamilton running within four seconds of one another but none seemed able to attack the car in front.
There was late drama as Charles Leclerc, competing in his first home race, shunted into the back of Brendon Hartley as he exited the tunnel. The Sauber driver's left front brake let go in a puff of smoke and he could do nothing to prevent the impact. The VSC came out but none of the top ten pitted. Leclerc and Hartley both retired.
Ricciardo held on to win his first Monaco Grand Prix by seven seconds ahead of his former team-mate. Hamilton dropped off in the final ten laps but still completed the podium.
Raikkonen was fourth ahead of Bottas.
Esteban Ocon, Pierre Gasly and Nico Hulkenberg, all of whom ran long opening stints with the Renault driver going 50 laps on his first set of tyres, finished sixth, seventh and eighth ahead of Max Verstappen.
Verstappen started last but overtook the Haas cars on the opening lap and five laps later passed Marcus Ericsson before making short work of Lance Stroll and Brendon Hartley.
Pit stops and a long first stint saw the Red Bull driver running in ninth place when he came in for his only stop on lap 48. He re-emerged in 11th place and fought his way back up to ninth.
Carlos Sainz was P10.
Sergey Sirotkin's race was undone even before the start as his wheels were not fitted prior to the three-minute signal. He was hit with a ten-second stop-go penalty.
Williams' woes were compounded when Stroll pitted on lap 10 for a new front wing and tyres having suffered a front left puncture in contact with a Sauber. Stroll suffered a second tyre issue later in the race and was forced to pit again.
They finished P16 and 17.
1 Daniel Ricciardo Red Bull 1:42.54.807
2 Sebastian Vettel Ferrari 7.336s
3 Lewis Hamilton Mercedes 17.013s
4 Kimi Raikkonen Ferrari 18.127s
5 Valtteri Bottas Mercedes 18.822s
6 Esteban Ocon Force India 23.667s
7 Pierre Gasly Toro Rosso 24.331s
8 Nico Hulkenberg Renault 24.839s
9 Max Verstappen Red Bull 25.317s
10 Carlos Sainz Renault 67.861s
11 Marcus Ericsson Sauber 69.066s
12 Sergio Perez Force India 70.102s
13 Kevin Magnussen Haas 73.914s
14 Stoffel Vandoorne McLaren 1 LAP
15 Romain Grosjean Haas 1 LA
16 Sergey Sirotkin Williams 1 LAP
17 Lance Stroll Williams 2 LAPS
Did not finish
Charles Leclerc Sauber crash
Brendon Hartley Toro Rosso crash
Fernando Alonso McLaren gearbox