Over 120,000 American fans were treated to a shootout thriller, with Red Bull Racing holding an unexpected upper hand and Hamilton, the driver with the most wins at the Circuit of the Americas, fighting just to keep in touch.
At the end of the first laps the grid was shaping up as a front-row lockout for the Austrian-backed team, but it was Sergio Perez in the ascendancy, the Mexican stringing together a sweet lap to pit Verstappen by 0.019 seconds and blitzing Hamilton by almost four tenths.
There was more to come from Mercedes, but how much was unclear. Hamilton unleashed with his second lap, and although he couldn’t improve in the first sector, he was rapid in the middle split, and by the end of the lap he’d found an extra half-second to take provisional pole.
Verstappen was next on the road, but an advantage early in the lap was almost wiped away as he started the final sector - and there was rain in the air threatening to ruin his lap.
If it slowed him down, it wasn’t by enough, and he pipped the Briton by 0.2 seconds.
Perez was next on the road, but unfortunately for the Mexican, the rain was intensifying, neutralising his lap and cementing in place a Verstappen-Hamilton front row.
“It was quite exciting out there,” he said. “In Q3 my first lap wasn’t amazing, and then in the final lap it started spitting, a bit of drizzle, in the last sector especially.
“To put the lap time in and be on pole position [and] to be P1 and P3 as a team is a strong performance.”
Hamilton, down by six points in the championship, was sanguine after the session despite seeing a strong advantage on Friday turning into a difficult deficit.
“I gave it everything today,” he said. “It was a bit of a struggle through qualifying. [Red Bull Racing ] were incredibly quick through qualifying.
“I was happy with my last lap … but I think that was pretty much everything we had.
“We’ll just work as hard as we can tomorrow.”
Perez was gunning for what would have been his first ever pole position in F1, but the Mexican lamented the rain that cost him a chance of at least a front-row start.
“We were really close,” he said. “Unfortunately my final lap wasn’t as good throughout the lap.
“I think the rain hit me a bit too hard in the final sector. There were spots of rain and I lost a bit of grip in two corners.
“I think tomorrow it’s a very long race - I think the qualifying position is not so relevant.
“I think tomorrow we’re going to have a pretty good race. I’m looking forward to it.”
Valtteri Bottas was a muted fourth but will start ninth with a penalty for taking a sixth internal combustion engine as Mercedes attempts to diagnose its unreliability problems.
Promoted in his place will be Ferrari teammates Charles Leclerc and Carlos Sainz in fourth and fifth.
Daniel Ricciardo beat McLaren teammate Lando Norris to start sixth and seventh, while Pierre Gasly will be promoted to eighth for AlphaTauri.
Bottas will slot into ninth ahead of Yuki Tsunoda to complete the top 10.
Esteban Ocon qualified 11th ahead of Antonio Giovinazzi, the Italian moving up one place on the grid thanks to Sebastian Vettel, whose Aston Martin will be sent to 18th on the grid with an engine change penalty.
Fernando Alonso and George Russell, 14th and 15th in qualifying, are similarly afflicted by engine penalties and will start 19th and 20th.
Lance Stroll qualified ahead of Nicholas Latifi, Kimi Raikkonen and Haas duo Mick Schumacher and Nikita Mazepin, but the slowest five drivers of qualifying will start 13th to 17th thanks to the three penalised drivers starting at the back.