Vettel, 14 points behind the Briton, will start from the front for the fourth time at the Circuit Gilles Villeneuve after setting a track record of one minute 10.764 seconds on a sunny afternoon.
Hamilton had been hoping for a record seventh Canadian Grand Prix pole, at the track where he took his first win in 2007, but instead was out-qualified by Finnish team mate Valtteri Bottas who joined Vettel on the front row.
The top four all lapped inside the one minute 11 seconds mark.
“I got the job done. Yesterday we were a bit in trouble. I wasn’t really happy with the car, we had some problems and I just couldn’t get the rhythm,” said Vettel, who can take his 50th F1 victory on Sunday.
“Today I switched on. I guess I woke up the right way and what a day. The car was incredible, it just kept getting quicker. In my final lap I had a small mistake, otherwise I think there was a little bit more. But it was fantastic.”
Red Bull’s Max Verstappen, who could have become the youngest driver ever to take pole, dominated all three practice sessions but the 20-year-old could not keep pace with the Ferraris when it mattered most.
The Dutchman will line up third.
“I’m very happy with this weekend so far,” said Verstappen, who has been much criticised for his mistakes this season. “The car’s been working really well...to be third is great for us. In the race I think we can do a really good job.”
Hamilton will still be chasing a fourth consecutive win in Montreal on Sunday to equal Schumacher’s mark of seven victories at an island circuit named after Canada’s late Ferrari great.
“It was just a difficult session. The laps weren’t great laps,” said the Mercedes driver, like Vettel a four times champion.
“Our race pace was good yesterday. Our single lap was good too, but today it just didn’t come together. Ferrari did a better job today and that’s just the way it is.”
Ferrari’s Kimi Raikkonen qualified fifth fastest and will be joined on the third row by Red Bull’s Daniel Ricciardo, winner in Monaco two weeks ago and the last man to beat Hamilton to victory in Canada.
“On paper it’s not that satisfying but I actually feel we made a lot of progress in qualifying,” said the Australian.
“I think we got our stuff together...it felt like the laps were worth more than a sixth place but in the end, they weren’t...I really felt I did not a bad job.”
It was another disappointing day for the U.S.-owned Haas team, as Romain Grosjean failed to make it beyond the pitlane before the engine in the Frenchman’s car blew in a cloud of smoke.
The failure added to a miserable weekend for Grosjean, who has yet to score a point this season and damaged his car slightly during Friday’s free practice when he struck a groundhog.
“I think I am hitting the bad luck for the next season and the one after and maybe even 2021,” said Grosjean. “We’re laughing about it because at one point that’s the only thing you’ve got to do.”
There were also grim faces in the Williams pit as both Canadian Lance Stroll and Russian Sergey Sirotkin failed to make it out of the first qualifying session and will again start near the back of the grid.
It was the fifth time in seven races that both Williams cars failed to advance out of the first phase.