After the first runs in Q3 it was Sainz who led the way by 0.044s ahead of Leclerc, with Verstappen, who had topped Q2, facing a deficit of 0.056s and complaining that his first out lap in the final segment of the session was too slow, which cost him tyre temperature.
On the final fliers, Leclerc led the trio around and recorded the best time in the track's middle sector on his way to a 1m30.558s.
Sainz could only manage a personal best time in the final sector, which meant he slotted in 0.129s behind his teammate, with Verstappen the last to cross the line.
He had gone quickest in the first sector but lost time as the lap wore on and eventually missed out on repeating his pole from the 2021 curtain raiser at the same venue.
Sergio Perez made it a Red Bull 2-4, with Hamilton leading Mercedes' charge ahead of his former teammate Valtteri Bottas, who took sixth on this first appearance for Alfa Romeo.
Kevin Magnussen got his F1 return off to an excellent start with seventh for Haas, despite having to deal with a power steering hydraulics problem at the end of Q2, with the Dane pulling over at the first corner after crossing the line one his sole run at the end of Q3.
Fernando Alonso took eighth for Alpine, with Russell ninth after losing a chunk of time at the first corner on his final Q3 run, and Pierre Gasly finishing 10th for AlphaTauri.
His last-gasp improvement at the end of Q2 knocked out Esteban Ocon in the other Alpine, with Mick Schumacher recording his best F1 qualifying result in 12th for Haas.
Lando Norris was in eliminated in 13th for McLaren, reporting as he returned to the pits that it was "the best we could do today".
Alex Albon made it through Q1 in his first qualifying for Williams and then ran a contra-strategy in Q2 – heading out early to sample the track solo and then doing likewise for his final run when the rest made their final preparations for the end of the middle segment.
Albon's effort would have left him finishing 15th, but a few minutes later Alfa's Zhou Guanyu lost his best time – 1m32.387s vs the 1m32.664 that Albon had set – for running beyond track limits at Turn 5, the fast left kink that precedes the swooping right and left corners that feed down to the hairpin in the Sakhir track's middle sector.
In Q1, Yuki Tsunoda's final lap personal best could not get the second AlphaTauri driver higher than 16th, while Sebastian Vettel's temporary replacement Nico Hulkenberg slotted in behind in 17th.
Hulkenberg's last effort pushed him ahead of McLaren's Daniel Ricciardo, who missed all of the pre-season test in Bahrain after he contracted COVID-19, and Lance Stroll in the other Aston Martin.
Nicholas Latifi was the only driver to be knocked that did not set a personal best time on their last lap in the opening segment, which meant he remained last at the foot of the times.
|2||Max Verstappen||Red Bull||1'30.681||0.123|
|3||Carlos Sainz Jr.||Ferrari||1'30.687||0.129|
|4||Sergio Perez||Red Bull||1'30.921||0.363|
|6||Valtteri Bottas||Alfa Romeo||1'31.560||1.002|
|15||Guanyu Zhou||Alfa Romeo||1'33.543||2.985|
|17||Nico Hulkenberg||Aston Martin||1'32.777||2.219|
|19||Lance Stroll||Aston Martin||1'33.032||2.474|