Norris ended up seventh after trying to stay on out slicks when Hamilton, who had charged up the order in the race's second half before getting stuck behind the McLaren ahead of the rain arriving in the final laps, pitted for intermediates.
Norris also faces a post-race investigation for crossing the pitlane-entry line when he did eventually come in to switch to the wet tyres, by which time Hamilton had already swept ahead to take the lead.
At the start, Norris's fear of leading the pack down to the Turn 2 right-hander came true as, although he made a smooth getaway from pole, his slipstream gave a crucial advantage to those following behind.
This worked out best for Carlos Sainz as he recovered from a poor launch and George Russell jumping alongside from third, by sitting in behind Norris and then gaining ground dramatically as the two British drivers punched a hole in the air down to the first braking point.
There, Sainz swooped in front of Russell and to Norris's outside, sealing the lead despite locking up his left-front as the pack arrived at Turn 2.
Sainz managed to stay on track and did not have to go around the bollards in the run-off, which Fernando Alonso, rejoining alongside Russell before ceding ground to the fast-starting Lance Stroll.
By the end of the first lap of 53, Sainz was out of DRS range to Norris, with Russell third and then quickly falling back from the McLaren and heading train of cars down to Hamilton in sixth – the world champion falling back down the order, boxed in at the start after briefly getting alongside Sainz on the runoff the line and before the Ferrari benefitted from Norris's tow.
Sainz and Norris were able to run in the mid-1m41s-bracket over the opening few laps, with Russell dropping back by nearly a second a lap at time, with the rain the teams had predicted may impact the opening stages not influencing proceedings.
The two leaders broke clear, with Sainz running clear of Norris until the end of the first 10 laps, which point the Briton started to pressure the Ferrari.
After small attacks at Turn 2 on laps 10 and 11, Norris briefly backed off, describing his front left as "completely gone", before he suddenly closed in again on lap 13 and took the lead using DRS down the back straight to get ahead on the outside line into the Turn 12 right-hander.
Ferrari then called Sainz in at the end of the following lap, the Spaniard rejoining in front of Stroll, who had triggered the first stops with an undercut attack on Russell by coming in for hards at the end of lap 12.
Russell was brought in to cover Stroll, but emerged behind the Aston Martin, which, although the undercut was powerful, could not jump Sainz too despite a slow change to the Ferrari's left-rear.
That trio ran in clear air behind Valtteri Bottas, who had been passed by Verstappen as they and Charles Leclerc made steady progress up the order in the opening laps from their back-of-the-grid starts for changing engines – the Ferrari driver actually gaining six places on lap one.
The early stops for Sainz, Stroll and Russell meant Ricciardo, Hamilton and Sergio Perez had no choice but to stay out to avoid coming out behind them again, with Norris also staying put up front – the leader extending his lead over his teammate from eight seconds to 12 by the time Ricciardo pitted on lap 22.
The graining to the tyres the drivers – including Norris – had reported began to clear up, with the leader therefore staying out until lap 28, two laps after Mercedes had pitted Hamilton, now Norris's main rival after Ricciardo's stop went wrong with slow front-left change, to go from mediums to hards.
Norris rejoined after making the same compound change in the net lead, with Hamilton in the pack behind carving through the drivers that had pitted earlier – Stroll and then Sainz – plus Pierre Gasly, who was yet to stop.
That set up an eight-second difference to Norris's net lead with 22 laps to go, Perez, Fernando Alonso and Leclerc leading the race by this stage as they ran deep on the hard tyres they, and Gasly, had started on.
As the hard-starting cars peeled off in front of Norris and Hamilton – both of whom had to pass Leclerc on track – with the Mercedes scything into the McLaren's advantage with a series of fastest laps.
With 15 laps to go, Norris's lead was down to 1.7s but there Hamilton's charge stalled.
Norris set the fastest lap using DRS has he lapped Nikita Mazepin down the back straight on lap 40, and from there he matched Hamilton in the mid-high 1m37s, which kept the gap between the pair stable.
Attention then turned to the possibility of rain arriving in the closing laps, with drops starting fall as early as lap 42, but only getting serious four tours later.
The wet weather intensified first at the Turns 5-7 sequence at the top of the Sochi layout, with Norris initially coping better than Hamilton to pull away from the Mercedes, which had finally got within DRS range on lap 48.
But as conditions got worse, Norris defied McLaren's call to pit for inters on lap 49, opting to try and hang on with the slicks while Hamilton did come in to change to the green-walled rubber.
The decision soon backfired on Norris as Turns 3-7 were soon soaking wet, with the rain eventually making the track slippery all the way around.
Hamilton carved into the McLaren's lead and got ahead when Norris slid off at Turn 5 on lap 51, at the end of which he finally pitted.
With Hamilton clear ahead to take his milestone triumph, the order behind changed dramatically.
Sainz, who had cycled back to a high position despite his early stop as slow dry weather pitstops hindered several rivals, Ricciardo and Verstappen were among the first to pit for inters.
Verstappen used his to jump up the order and ran clear of Sainz by the flag – the Red Bull's fortunes changing dramatically after his early charge had been thwarted when he rejoined from his dry stop in a mixed pack of early-stoppers and long-runners.
He came home 53.2s down on Hamilton, with Sainz taking third – he too benefitting by the rain as Perez, who stopped for inters later than most, and Ricciardo had jumped him before it arrived.
Ricciardo took fifth ahead of Bottas, another driver who rose up the order in the late wet chaos having been stuck in the pack for most of the race.
Bottas, Kimi Raikkonen and Russell were the first to stop for inters, and they all gained considerably in the closing moments.
Raikkonen took eighth ahead of Perez, with Russell, who had been holding onto 10th even as the long-runners slotted in around him following his early stop, claiming the final point in the rain.
Then came Aston pair Stroll and Sebastian Vettel – who collided twice just as the rain got serious – and Gasly.
Stroll and Gasly will also be investigated after the race for a clash at Turn 9 in the late chaos.
The only non-finishers were Nicholas Latifi, who retired in the pits just as the rain arrived, and Mick Schumacher, who was called in after 22 laps due to a hydraulic leak on his Haas.
|2||Max Verstappen||Red Bull||53.271|
|3||Carlos Sainz Jr.||Ferrari||1'02.475|
|8||Kimi Raikkonen||Alfa Romeo||1'28.955|
|9||Sergio Perez||Red Bull||1'30.076|
|11||Lance Stroll||Aston Martin||1'46.198|
|12||Sebastian Vettel||Aston Martin|
|16||Antonio Giovinazzi||Alfa Romeo|
|View full results|