This is Vettel's second victory in Canada, having won his first for Red Bull in 2013, and marks his 50th career victory - only Michael Schumacher, Hamilton and Alain Prost have scored more.
Red Bull's Max Verstappen, who dominated much of practice, turned in a mature, error-free effort to take third place and quiet the storm of criticism swirling around him following a string of errors and crashes.
Stroll and Hartley's coming together saw the safety vehicle deployed but that was the extent of the drama.
Vettel's win means he now leads Hamilton by a solitary point in the Drivers' Championship standings.
"Our race pace was good yesterday. I'm just so happy that I finished".
Sloane steady wins the race for Stephens
When Stephens led by a set and 2-0, though, it appeared as if the US Open champion would improve to an unblemished 7-0 in finals. The top-seeded Halep beat the 10th-seeded Stephens 3-6, 6-4, 6-1 on Court Philippe-Chatrier to win the French Open on Saturday.
"We got pole today for a reason", said Vettel.
"I just thought it was going to fail and every single lap I was just on the edge waiting for that power to drop away". Vettel's lone pit stop on the 38th of 70 laps saw him emerge with a six-second lead that was never threatened.
But Bottas and Hamilton may have been set back by the team's inability to get an updated engine ready in time for the race, while Ferrari and Red Bull both had new parts. "We did not really change a lot initially and that's always a good sign and gives you hope", said Verstappen. Constantly today going into that corner I was struggling to get the auto stopped, be it front locking or rear locking, so it was quite messy.
Kimi Raikkonen ended the race in P6 while the Renault team Nico Hulkenburg and Carlos Sainz took P7 and P8 respectively.
The Spaniard now turns his attentions to the Le Mans 24 Hours race with Toyota next weekend. The auto all weekend has been really strong, every session we made progress with the vehicle and I'm feeling confident on the track. "So I tried it all but I wasn't sure until the end if it was enough". He earned his first Formula One points with a ninth-place finish at Circuit Gilles-Villeneuve a year ago. Even given the new engine Vettel had the pace of the field and managed his one-stop race untroubled to the flag.