The Briton was more than half a second quicker than Ferrari’s Carlos Sainz, who will start alongside him on the front row, and Williams driver George Russell in third.
Lewis Hamilton could manage only fourth after a crash in the pit lane cruelled his chances, and championship leader Max Verstappen will start last with an engine penalty.
Rain had drenched the Sochi Autodrom on Saturday morning, but a break in conditions allowed the grid-setting session to get underway on time, and the track dried through the hour until it was just clear enough to contemplate dry-weather tyres for the pole shootout.
The field set out on intermediate rubber for the first laps, but there was a rush to the pit lane halfway through the 12-minute segment to switch to slicks after George Russell, who had run out of intermediate tyres, was the first to roll the dice.
Hamilton had been on provisional pole up to that point as he came in to switch compounds, but as he sped into the narrow pit entry he lost control of the rear of his car and slid into the barrier, breaking his front wing.
He continued to his pit box, but it cost precious time for the team to ready a replacement nose cone. Meanwhile teammate Valtteri Bottas came into the pits for his own set of tyres, and he was forced to wait for the team to move the damaged sister car out of the way before he could be serviced.
Both were eventually sent back out onto the track, but the time lost in pit lane meant Bottas and Hamilton could set only a timed lap apiece on the slick rubber. It meant neither could build temperature into the rubber in the damp and chilly conditions, putting them at a major disadvantage.
It opened the door wide to those who moved onto the rubber earlier, and Norris capitalised with a beautifully controlled lap to take his maiden pole.
“It feels amazing, I don’t know what to say,” he said. “Quite a manic session!”
But the Briton’s joy was somewhat tempered by the fact pole in Sochi is one of the least valuable on the calendar, with the long run to the first braking zone giving those immediately behind him a slipstream advantage on the first lap.
“I’m not really looking forward to it!” he said. “But you never know. It’s going to set us up well, and it’s the best position we can be in.
”I’m happy. It’s my first pole position, hopefully the first of many.”
Carlos Sainz was half a second off the pace, but the Ferrari driver rued being ahead of Norris on the track, meaning he lost crucial tenths of a second in the rapidly improving conditions.
“We did a very good strategy, getting the slicks up to temperature,” he said. “Unfortunately I was one of the first ones across the line, which didn’t allow me to exploit the track and the conditions.”
But the Spaniard was optimistic he could battle with Norris and represent the team in the battle for third in the constructors championship.
“In the dry we’ve been competitive. Obviously there’s the two Mercedes and the Red Bull of Perez that will be much quicker tomorrow, but we’ll put on a fight and try to have some fun.”
Russell was a sensational third for the backmarking Williams team, and the Briton paid credit to his engineers for gambling early to give him the chance to maximise his time in the conditions.
“It’s crazy,” he said. “The team is doing an amazing job once again, pitting at the right time, putting the right tyres on.
“I’m really looking forward to [the race]… we’re going to have a battle on our hands, but we’re pretty slippery on the straight, got good straight-line speed.”
Hamilton will start fourth, with teammate Bottas stuck in seventh, between them qualifying Daniel Ricciardo and Fernando Alonso.
Lance Stroll qualified eighth ahead of Sergio Perez in the leading Red Bull Racing car, and Esteban Ocon completed the top 10.
Sebastian Vettel was knocked out 11th, having missed the pole shootout cut-off by just 0.052 seconds. AlphaTauri teammates Pierre Gasly followed in 12th and 13th ahead of Nicholas Latifi
Neither Nicholas Latifi nor Charles Leclerc set times in Q2, with both carrying back-of-grid penalties for engines changes this weekend taking them beyond their maximum allocation of motors for the season. The Canadian and Monegasque will start 18th and 19th ahead of the similarly penalised Verstappen.
Kimi Raikkonen was the first driver knocked out in drying conditions in Q1, the Finn 0.7 seconds slower than the progression time.
Mick Schumacher qualified 17th, two places and almost four seconds ahead of teammate Nikita Mazepin in 19th, securing the head-to-head qualifying battle between the rookie teammates with seven weekends still to run.
Antonio Giovinazzi slotted between them after a spin at turn 16 halfway through the session, almost collecting Leclerc, who was close behind him on track, in the process.
Max Verstappen qualified last after setting two untimed laps. The Dutchman is carrying a back-of-grid penalty for an engine change and will start last, and his team therefore opted against risking damage or accumulating mileage on the damp track by doing the bare minimum required to start on the grid.