The centurion’s best lap of 1 minute 16.741 seconds put him ahead of Verstappen by a slender 0.036 seconds after their first flying laps of the top-10 shootout.
But track conditions worsened in time for their second laps, with the wind picking up in particular, and neither driver was able to improve, clearing the way for Hamilton to score his pole position tonne.
“I can’t believe we’re at 100,” he said. “It’s down to the men and women back at the factory, who are continuously raising the bar and never giving up.
“The journey we’ve been on has been immense. Who would’ve though at the end of 2012 when we made the decision to partner we’d be going 100.”
Hamilton has taken 74 of his poles driving a Mercedes, with the balance coming in his run with Mercedes between 2007 and 2012.
A Mercedes has taken pole at the Circuit de Barcelona-Catalunya every year since Hamilton joined the team in 2013, and Verstappen said he was happy enough to have taken the fight to the German marque at one of its best-suited tracks.
“Second for us on this track was very good today,” he said. “We know they are hard to beat around here, but to be that close - I can be happy with that.
“It seems like the pace is there, so of course I hope we can have a good race as well.”
Valtteri Bottas was 0.132 seconds slower than his teammate to take third on the grid, and the Finn, with the advantage of starting on the clean side of the grid behind Hamilton, sound optimistic that he might be able to make up for letting victory slip from his grasp last weekend in Portugal.
“We have a strong package,” he said. “It’s going to be a good race tomorrow, no doubt.”
Charles Leclerc, impressive all weekend in Spain, qualified strongly in fourth at the head of the midfield, albeit the gap to frontrunners sitting at a substantial 0.769 seconds.
Esteban Ocon continues to lead the way at Alpine with fifth on the grid. The Frenchman will start alongside Carlos Sainz in the sister Ferrari.
Daniel Ricciardo is enjoying a stronger weekend for McLaren after slumping to 16th on the grid last weekend. The Australian was the lead McLaren in qualifying seventh ahead of teammate Lando Norris in ninth.
The pair was split by Red Bull Racing’s Sergio Perez. The Mexican spun off the track at the start of the pole shootout but was able to rejoin, but his second and final lap was good enough for only eighth and was almost a full second off the pace.
Fernando Alonso qualified 10th, the two-time champion lapping his Alpine 1.4 seconds off pole.
Neither Aston Martin crack the top 10, Lance Stroll and Sebastian Vettel qualifying 11th and 13th and split by AlphaTauri’s Pierre Gasly, who will start form the bottom half of the grid for the first time this season.
Alfa Romeo’s Antonio Giovinazzi qualified 14th and of Williams driver George Russell.
Yuki Tsunoda was vociferously unhappy with the behaviour of his AlphaTauri on his way to 16th on the grid ahead of Alfa Romeo’s Kimi Raikkonen.
Haas rookie Mick Schumacher qualified 18th ahead of Williams’s Nicholas Latifi and teammate Nikita Mazepin at the back of the grid.