The 25-year-old German drove his Red Bull to the fastest lap time to complete his hat-trick of poles at the Circuit Gilles Villeneuve and his third this season.
It was the 39th pole of his record-breaking career.
Vettel clocked a best lap of one minute and 25.425 seconds, using ‘intermediate’ treaded tyres in the wet conditions, to finish fastest ahead of Lewis Hamilton of Mercedes by 0.087 seconds.
Vettel said: “I’m looking forward to the race tomorrow, I think we had strong performance yesterday so whatever happens in terms of conditions it should be good. We expect dry conditions tomorrow, but it doesn’t matter.
“We have both sets of tyres left, but even if it rains we should be in decent shape. But it’s a long race, 70 laps here, so anything can happen.”
Hamilton, who was hunting his fourth pole on one of his favourite circuits, ended up starting second and was a man of few words afterwards.
He said: “I was doing a pretty good final lap, but I ran wide, so it was unfortunate, but I’m still happy.”
Vettel’s success in taking pole ended Mercedes run of four straight poles on a dramatic day that saw unsung Finnish rookie Valtteri Bottas claim third place on the grid for the Williams team.
It was his first appearance in the top-ten shootout and he endorsed his success with an impressive showing of skill on the slippery circuit.
Bottas will start Sunday’s 70-laps race with fourth-placed German Nico Rosberg, winner of the Monaco Grand Prix, alongside him in the second Mercedes, his run of three poles having ended in the rain.
Bottas said: “This means a lot. It’s way more up in the grid than we could have imagined. The first six races have been so difficult, so this will be a nice boost for the team. We got everything just right today.”
“That was fantastic by Seb,” said Red Bull team chief Christian Horner. “It was really tricky and difficult to get the timing right, but Sebastian did it just perfectly.”
Mark Webber qualified fifth in the second Red Bull ahead of Fernando Alonso of Ferrari and, remarkably, Frenchman Jean-Eric Vergne of Toro Rosso, who also registered his best qualifying performance to take seventh.
Kimi Raikkonen, the 2007 champion, was eighth for Lotus ahead of Daniel Ricciardo, in the second Toro Rosso, and Adrian Sutil who will start 10th for Force India as the team celebrate their 100th Grand Prix appearance.
It was a dismal day for many in the changeable cold and wet conditions with both McLaren drivers failing to make the top ten shootout — after the team had won this race for the last three years in succession — and Ferrari’s Brazilian Felipe Massa crashing out in Q2, his third big recent accident, following two at the Monaco Grand Prix.
Mexican Sergio Perez qualified only 12th and his McLaren team-mate Jenson Button was 14th.
The 2009 champion reflected: “To be fair, I’m not too upset. It’s pretty scary out there. I had my eyes closed for most of it. We struggled to get temperature into the tyres. It just didn’t go our way.”
Sutil’s Force India team-mate Paul Di Resta failed to make the cut from Q1 — and blamed the team.
In an outspoken outburst, he said: “We spent far too much time trying to fix a problem, when the conditions were good, when the car could have run.
“It’s the fault of the team again. It’s just not good enough…”
He was joined among the early departures by Frenchman Romain Grosjean of Lotus who qualified only 19th.