Lewis Hamilton took a controlled victory in the Canadian Grand Prix, fending off team-mate Nico Rosberg.
The Mercedes drivers circulated at the front throughout an unusually uneventful race as Williams's Valtteri Bottas beat Ferrari's Kimi Raikkonen to third.
After Hamilton led comfortably through the first part of the race, Rosberg came at him after their sole pit stops, but the world champion was never under threat.
Hamilton's fourth win in seven races extends his drivers' championship points advantage to 17.
The win helps to make up for Hamilton's disappointment in the last race in Monaco, where he lost a dominant victory as a result of a strategic error by the team.
Hamilton led into the first corner from pole position and built a four-second lead before his pit stop and then controlled the gap at little over a second for the rest of the race as the drivers of the two silver cars managed fuel, brakes and tyres to the finish.
Hamilton said: "I love Montreal. I love this track. I love this city. Really just a fantastic weekend, great to get back on the top step.
"I didn't feel I had the most comfortable balance, I had a bit too much understeer. Nico was quick but I didn't feel under too much pressure. I felt I could pull it out when I needed to.
"Did I need this? I think so."
Rosberg said: "It was a challenging race because we had to manage fuel, brakes and all these things. It was a good race but I couldn't quite make it happen.
"I was pushing like mad to try to put the pressure on Lewis but he didn't make any mistakes."
Behind them, Raikkonen was on course for a comfortable third place until a spin at the hairpin on lap 27, caused by the hybrid system kicking in unexpectedly.
That cost him position to Bottas and, although Ferrari chose to pit Raikkonen to fit a set of fresh super-soft tyres with 30 laps to go so he could attack to the end of the race, Bottas was able to do enough to hold him off.
Raikkonen finished ahead of team-mate Sebastian Vettel, who drove an attacking race from the back of the grid following an engine problem in qualifying and a five-place grid penalty for passing illegally in practice.
Vettel rode his luck at times, especially at the last chicane, where he was involved in two near-miss incidents.
He bounced over the kerbs trying an over-optimistic move on McLaren's Fernando Alonso early in the race, and then did the same with a better-judged move on Force India's Nico Hulkenberg, but still needed his fellow German to spin to avoid contact.
Vettel would have had to race Lotus's Romain Grosjean for fifth, but the Frenchman put himself out of the reckoning by misjudging a lapping move on Manor's Will Stevens and getting a puncture.
Grosjean finished 10th, which he held on to despite a five-second penalty for causing the incident was applied.
His mistake handed sixth to Williams's Felipe Massa, from 15th on the grid.
It was a dire race for Red Bull and McLaren, both struggling with a lack of power, although much more so in McLaren's case.
The best-placed Red Bull was Daniil Kvyat in ninth, behind Lotus's Pastor Maldonado and Hulkenberg.
Both McLarens retired after running close to the back of the field.
The drivers' difficulties coping with the under-powered and thirsty Honda were underlined by a response he gave on the radio to his team when asked to save fuel.
"I don't want, I don't want," Alonso replied. "Already I have big problems now. Driving with this and looking like amateurs. So I'd like to race and then I concentrate on the fuel."