The four-time world champion clocked 1min 43.885sec on the demanding street circuit to front the grid for the first time in nearly two years, with Mercedes' Hamilton down in fifth.
Vettel was nearly half-a-second faster than second-placed Daniel Ricciardo of Red Bull, with Kimi Raikkonen finishing third in the other Ferrari.
"I'm surprised by the margin but I think it just came together. I had a near-perfect lap at the end," said Vettel, after screaming his celebrations over the team radio.
Vettel's first pole position since Brazil 2013 also snapped a qualifying dry spell for Ferrari stretching back to Germany 2012.
Also Read
Mercedes have been slow all week so far but any thoughts they were bluffing evaporated in a difficult session for the championship pace-setters.
Hamilton was briefly quickest in Q1 but he was otherwise not in the reckoning, and had to pit in Q3 when his underbody was damaged by scraping a kerb.
Hamilton will also have to fight past both Red Bulls and both Ferraris if he wants to match his boyhood idol's career tally of 41 wins from 161 races on Sunday.
"I thought they were playing a few card games yesterday but it's obvious they're not particularly comfortable this weekend," Ricciardo said.
Kvyat led Q1 but McLaren's Jenson Button scraped into Q2 by just 74 thousandths of a second when he secured 15th quickest in the first qualifying session.
Carlos Sainz effectively brought Q2 to a close when he hit a wall late in the session, leaving bodywork on the track and bringing out the yellow flags ordering cars to slow down.
McLaren's Fernando Alonso and Button were among the five denied a spot in the top-10 shoot-out, alongside Nico Hulkenberg, Sergio Perez and Sainz.