Ferrari's Sebastian Vettel won a slow-burning Monaco Grand Prix to extend his championship lead over Mercedes' Lewis Hamilton to 25 points.
Vettel led home team-mate Kimi Raikkonen after passing the Finn by running longer to their only pit stops.
There was suspicion that the strategy was a deliberate move by Ferrari to get their leading driver into the lead but the team denied that was the case.
Hamilton finished seventh after a difficult race from 13th on the grid.
A largely dull race was enlivened by a late safety car after a collision involving McLaren's Jenson Button, on his one-off return to F1 in place of Fernando Alonso.
It closed up the field and led to a series of crashes and collisions among the backmarkers.
Team orders return at Ferrari?
Raikkonen took his first pole position for nine years on Saturday after Vettel made mistakes on both his quick laps in the top-10 qualifying shootout.
The Finn converted his advantage into a lead at the first corner and the two Ferraris began to edge away from Valtteri Bottas' Mercedes and the two Red Bulls of Max Verstappen and Daniel Ricciardo.
The race was always going to feature only one pit stop and there was speculation before the race over whether Ferrari would find a way to engineer the strategy to allow Vettel to win.
The way things panned out, it looked as if that was what happened.
Raikkonen made his pit stop on lap 34, at a time when there was no obvious requirement to do so, and he came out behind slower cars, which he had to lap.
Vettel used the opportunity to set a series of flying laps and by the time the German pitted five laps later, he had more than enough of an advantage to rejoin with a two-second lead.
He continued to pull quickly away from Raikkonen, building a 10-second lead within eight laps and cruised to his third win of the year, despite the late safety car period.
Ferrari said Raikkonen's stop was on the pre-planned lap and that they left Vettel out to avoid the risk of him being passed by Red Bull's Daniel Ricciardo, who was also delaying his pit stop at the time.
Hamilton's low-key comeback
Mercedes knew they would always struggle to make up too much ground with Hamilton after starting 13th because of a messy qualifying session, including a series of driving errors and problems with tyres.
They decided to run him long and hope to gain from his speed once he got some clear air, as cars pulled in to make their pit stops.
Hamilton ran until lap 46 before stopping, by which time he was sixth. He lost only one place, to Toro Rosso's Carlos Sainz, and ran seventh to the end, closing on the Spaniard but unable to pass him.
"The battle's not over, boys," Hamilton said over the radio in the closing laps. "We'll take these points."
Button's not-so-low-key comeback
Button's one-off return to Formula 1 as a replacement for Alonso, who was in America to race in the Indianapolis 500, ended in a crash with Sauber's Pascal Wehrlein.
The 2009 world champion started from the pits after McLaren made a decision to change his car set-up after qualifying because he was starting from the back after engine penalties.
The team pitted him on the first lap, the idea being to get the mandatory pit stop out of the way and hope to gain places.
But Sauber played the same strategy with Wehrlein and the German rejoined right in front of Button.
Sauber were found guilty of an unsafe release because Button had to lift in the pit lane to avoid contact, but the five-second time penalty Wehrlein received - which would have been applied post-race - did not help Button, who was still stuck behind the Sauber.
Finally, on lap 60, Button saw an opportunity to pass as they were lapped by Raikkonen and dived down the inside of Wehrlein's car at the Portier corner.
Button was halfway alongside, Wehrlein turned in and the cars collided, the Sauber rising up on to its side and coming to rest on its left-hand wheel rims with Wehrlein unhurt, but stuck in the cockpit against the barrier.
Frantic final laps
The safety car dramatically enlivened the last few laps.
Red Bull switched Verstappen on to fresh ultra-soft tyres to give him a chance to pass Bottas for fourth, after losing the position with an earlier strategy play.
Ricciardo had vaulted from fifth to third as a result of Red Bull splitting their strategies, with Verstappen failing in his attempt to pass Bottas by stopping first, and the Australian succeeding in doing so by running long and pitting later.
At the restart, Ricciardo hit the wall at Sainte Devote, the first corner, under pressure from Bottas but was able to continue without losing a position.
The three cars circulated together for the rest of the race, Bottas in a Red Bull sandwich, but all three were stuck and finished with Ricciardo taking the final podium place ahead of Bottas and Verstappen.
Earlier, Verstappen had not been happy about dropping behind his team-mate, using an expletive over the radio to describe the strategy plan as "a disaster".
Elsewhere, Sauber's Marcus Ericsson crashed out under the safety car, McLaren's Stoffel Vandoorne slid into the barriers when passed by Force India's Sergio Perez at the restart, and Perez collided with Toro Rosso's Daniil Kvyat at Rascasse, putting the Russian out of the race.
Driver of the day
What happens next
The Canadian Grand Prix on 11 June is held on one of Hamilton's favourite circuits, where he has always excelled. But Mercedes will be heading their with trepidation. It is the same sort of low-grip, low-abrasion circuit as Sochi and Monaco, where Hamilton has struggled, and the teams will also be using the ultra-soft tyre, which Mercedes are struggling to make work effectively. On the face of it, Ferrari will head there as strong favourites for another win.
What they said
Sebastian Vettel, P1: "Unbelievable. It was a very tense race. I knew that was the chance to win and I was able to use that window and come out ahead. After that I was able to control the gap behind."
On whether the pass on Raikkonen was pre-planned by the team: "No, not really. The plan was to try and pull away which we did. Valtteri had good pace and then the window opened, as soon as Valtteri pitted Kimi responded. I still had some pace and I was able to keep going."
Kimi Raikkonen, P2: "Nothing to say really. Obviously it's still second place but it doesn't feel awfully good. But it is how it goes sometimes: we go to the next race and try to do better. It is one of those races when you hope to get more."