Vettel, whose Ferrari team brought an engine update to Montreal, had a slow start to the weekend but finally found his rhythm in qualifying and the result was a stunning pole position. From the number of red flags with the prancing pony logo, the Italian squad remains the clear favourite in the grandstands.
Vettel wasn't happy about the number of cars on track unaware of the drivers approaching them on a flying lap.
In the final five laps, Hamilton pushed Ricciardo hard in the battle for fourth but the Australian - victor at Monaco last time out - just held on with the four-time world champion forced to relinquish his standings lead as he recorded his lowest placing of the season.
Before the race on Sunday, the vehicle Villeneuve used in 1978 will be driven by his 47-year-old son Jacques, the 1997 world champion, to lead the ceremonial parade lap.
Lewis Hamilton was fourth quickest on a circuit where he has tasted the victory Champagne on six different occasions, including the last three consecutive years. Max Verstappen was third and the other Red Bull vehicle, driven by Daniel Ricciardo, was fourth.
Stroll, 19, was in is second Canadian GP.
Vettel ended Q1 on top ahead of the Finn with Hamilton third, but it was tense for McLaren as twice former champion Fernando Alonso squeezed into Q2 at the end in 14th place ahead of team-mate Stoffel Vandoorne.
Red Bull boss Christian Horner has hinted that Red Bull Racing is ready to take a gamble on Honda power units for the 2019 Formula 1 season, with a decision set to be made before the Austrian Grand.
Daniel Ricciardo was sixth fastest, lapping just two-hundredths of a second off Raikkonen.
"We knew that, in general, we're lacking power, so we just try to compensate with that", said Verstappen.
Red Bull continued to suffer from lack of speed down the straights as they tried to put the pressure on Ferrari, but Vettel finished the session by knocking 12 milliseconds off his own best time. "In the race, it all calms down a bit so that's why I think we're always a bit more competitive in the race".
Vettel sees another chance to honour the memory of Gilles Villeneuve, who died in a crash at the 1982 Belgian Grand Prix, with a Ferrari win. Vettel said. "I brushed the wall and lost some time getting ready for the second session. Thanks to the team for fixing the auto yesterday after I hit the wall".