If it was plain sailing for the Briton it was anything but for Vettel who suffered front wing damage on lap one which forced him into an early pit stop and meant the Ferrari driver was playing catch up for the remainder of the race.
The German would eventually battle his way back to fourth place, dramatically passing both Force India cars in the closing laps.
Ahead of him, Hamilton’s teammate Valtteri Bottas took second with Red Bull Racing’s Daniel Ricciardo claiming the final podium spot.
“I had my first pole and I had my first win here 10 years ago,” Hamilton said. “To repeat it this weekend is incredible.”
Hamilton’s record is remarkable in Montreal — his six wins in 10 races leaves him one shy of Michael Schmacher’s record total of seven victories at the circuit.
Sunday’s full quota of points sees him claw back vital ground with Vettel in the title fight following Mercedes’ poor showing in Monaco two weekends ago — both Hamilton and Bottas failed to make the podium.
Seven races in, Hamilton now trails Vettel by 12 points with both men having three wins each this season.
Bottas remains third while Ferrari’s Kimi Raikkonen is fourth — the Finn could only finish seventh on Sunday.
Hamilton escaped a chaotic start to the race as the chasing pack converged at the first corner.
Max Verstappen surged from fifth to second, clipping Vettel’s front wing on his way past before Felipe Massa was taken out by a spinning Carlos Sainz after the Toro Rosso driver had lost control following contact with Romain Grosjean’s Haas car in the approach to Turn 3.
The crash ushered on the Safety Car for three laps before racing resumed with Verstappen vying for the lead with Hamilton — but not for long.
By lap 11 the Dutchman was throwing his hands in the air in frustration as his car suffered battery failure — his third retirement in the last five races.
With Hamilton extending his lead, the battle was on for podium places with Ricciardo holding firm in the end from the Force India cars of Sergio Perez and Esteban Ocon, and latterly Vettel, who was left ruing his unfortunate coming together with Verstappen at the start.
“Obviously the beginning of the race didn’t go our way, but I was fairly confident I could get a podium — one lap short,” Vettel told reporters.
It was a better day for F1 rookie Lance Stroll –the Canadian teenager picked up the first points of his career with a ninth-place finish in front of his home crowd.
Further down the field, there was more agony for Fernando Alonso whose Honda engine gave up the ghost in the closing laps of the race.
And things weren’t much better for the Spaniard’s McLaren teammate Stoffel Vandoorne who finished 14th — the British team are still searching for its first points of 2017.
McLaren and Ferrari will hope for better luck in two week’s time when the 2017 World Championship resumes with the Azerbaijan Grand Prix.