Vettel ruled from lights to flag at the Circuit Gilles Villeneuve in an emphatic display as he crossed the line ahead of Valtteri Bottas with Red Bull’s Max Verstappen in third.
But Hamilton, so often the master in Montreal, had to settle for fifth on a weekend to forget for the defending champion and his team.
The Englishman, who arrived in North America with a 14-point lead over Vettel, will head to the next round in France trailing his Ferrari rival by one point.
Daniel Ricciardo took the chequered flag in fourth ahead of Hamilton, with Kimi Raikkonen sixth for Ferrari.
Unlike all their rivals, Mercedes failed to bring a planned engine upgrade to the seventh round of the championship – and it cost the Briton dearly.
Hamilton, running on a seven-race-old engine, reported he was down on power in the opening exchanges, and had to pit earlier than planned as his Mercedes team added coolant to his overheating machinery.
Hamilton, fourth at the time, headed into the pit lane on lap 16 of this 70-lap race, but the early change of tyres allowed Ricciardo to usurp the Mercedes car.
Frustrated Hamilton asked the Mercedes pit wall: “Why did we stop early?”
“The stop was brought forward to resolve this PU [power unit] problem,” was the response from his engineer Pete Bonnington. “It has helped a little bit.”
Hamilton’s Mercedes team have dominated the sport since 2014, but the fiercer competition provided by both Ferrari and Red Bull this year has led to a series of errors.
A timing glitch during a virtual safety car period cost Hamilton the win in Australia before a gearbox issue resulted in a grid drop at the next round in Bahrain.
Mercedes can also be accused of playing it too safe when they failed to bring Hamilton in for new tyres following a late safety car in China. And yesterday their failure to give Hamilton a fresh engine contributed to him losing the championship lead.
In contrast, Vettel, armed with a fresh engine, flew to victory to claim Ferrari’s first victory in Canada for 14 years and the German’s first in five races.
His win was never in doubt after he surged off the starting line and controlled the race to claim his 50th grand prix win – despite the chequered flag accidentally being waved one lap before the finish by Canadian model Winnie Harlow – and apply the championship pressure back on to Hamilton.
Bottas did well to finish second, while it was a much-needed quiet afternoon for Verstappen, following his series of accidents. He finished a comfortable third.
British team Williams have endured a miserable season and they left Montreal rooted to the foot of the constuctors’ championship.
Lance Stroll caused the biggest incident of the race when he lost control of his Williams on the 170mph charge to turn six and squeezed Brendon Hartley up against the wall.
Toro Rosso’s Hartley was left with nowhere to go and the two collided in dramatic fashion.
Both reported they were unharmed in the opening-lap incident, although New Zealander Hartley was subsequently taken to hospital for a scan.
Fernando Alonso’s 300th grand prix epitomised his recent miserable run with McLaren. After starting only 14th, he retired with an exhaust issue.
Vettel joins only Michael Schumacher, the last Ferrari driver to triumph in Canada, Hamilton and Alain Prost to win a half-century of races.
It is 40 years since Canadian Gilles Villeneuve, after whom the circuit is named, won the first F1 race in Montreal in a Ferrari car.
“It is unbelievable,” Vettel said. “I have already said what this place means to Ferrari.
“To have a Ferrari winning, and me driving it, makes me very proud and honoured. It is a day to remember for the great Gilles Villeneuve.
“There is still a long way to go [in the championship] but it is a good side effect.”