Norris will be joined on the front row by Carlos Sainz, with George Russell third for Williams and the Mercedes drivers fourth and seventh, with Hamilton ahead of practice pacesetter Valtteri Bottas.
After FP3 was cancelled by torrential rain in the morning at Sochi, qualifying was able to take as the rain eased ahead of the session’s scheduled starting time.
In the first two segments, which Hamilton topped, the track remained wet enough for intermediates to be used throughout, but a dry line had just about emerged when Q3 began.
The shootout runners initially all headed out on the inters, with Hamilton posting the fastest time on that compound at 1m44.050s and Norris slotting in just behind as the drivers completed their banker laps.
Russell and Williams were the first to commit to slicks, but did not post times that threatened those set on inters on until right at the end of Q3.
By this point all the other top 10 runners had switched to the softs as well, but when Mercedes called Hamilton – who was set to improve his personal best on the inters before backing off to pit – and Bottas in, there was drama when the world champion tapped the wall coming through the tight pit entry lane inside the final corner.
Hamilton’s front wing had to be changed and his suspension checked, with Mercedes pushing him out of the way so Bottas’s tyres could be changed and the Finn wasn’t unduly held up.
But that left both Black Arrows drivers with little time to build the necessary tyre temperature and they could not match the improvements made by the drivers that had switched to slicks earlier.
Hamilton then spun at Turn 16 on his sole flier on the softs, which meant he was shuffled down by the top three.
Sainz initially claimed provisional pole with a 1m42.510s, but Norris beat him in the second and third sectors to claim a first F1 career pole on a 1m41.993s.
Russell finally found enough time to leap up from 10th to slot in ahead of his future Mercedes teammate, with Daniel Ricciardo taking fifth behind Hamilton.
Then came Fernando Alonso and Bottas, with Lance Stroll, Sergio Perez and Esteban Ocon rounding out the top 10.
Ricciardo and Stroll have been called to see the stewards after qualifying to investigate an incident between the pair in Q1.
At the end of Q2, Williams pitting Russell to take a fourth set of inters (since the start of qualifying) paid off as he was able to set a series of personal bests that meant he jumped into the top 10 with his final lap in the middle segment.
This knocked out Sebastian Vettel, who was not on a flying lap when the chequered flag came out, as he missed the cut behind Sainz by 0.052s.
Then came the AlphaTauri pair Pierre Gasly and Yuki Tsunoda, with the former equalling his worst ‘normal’ qualifying position of the season in 12th.
Nicholas Latifi had been given a fourth new engine of the season ahead of qualifying after a pneumatic problem was discovered on his previous power unit after Friday practice, which means he will join Charles Leclerc and Verstappen in starting at the rear of the field.
That meant that after progressing from Q1 along with Leclerc, Latifi only came out to complete two sectors early in the Q2 – and then again at the end of the session – and pitted without setting a time.
This means he will start the race ahead of Leclerc, who did not come out at all in Q2.
In Q1, Gasly headed a long queue of cars ready to hit the track as soon as the session began, the teams keen to get early times on the board in case the rain returned, with Alonso the only driver sent out on the full wets.
The times tumbled by six seconds as the track dried throughout the opening segment, which Verstappen did not take full part in considering he is also set to start at the back of the grid thanks to his engine change penalty.
The Red Bull driver emerged to complete two sectors on a single exploratory lap, at the end of which he returned to the pits and climbed out.
The session, which featured two spins – one for Perez late-on at Turn 2 and one for Antonio Giovinazzi coming out of Turn 16 just in front of Leclerc in the early stages – ended with the majority of the midfield runners pitting ahead of the closing minutes to take fresh inters.
This combined with the drying track to mean the times continued to get quicker, with all the eliminated runners – bar Giovinazzi who had backed out by this stage – setting personal bests on their final flying laps at the chequered flag.
Kimi Raikkonen was knocked out in 16th ahead of Mick Schumacher and Giovinazzi, with Nikita Mazepin the slowest of the runners to set a time – his personal best nearly four seconds slower than his Haas teammate.