The UAE Team Emirates rider powered through ahead of Mads Pedersen on the Promenade Des Anglais to claim the first yellow jersey of the delayed 2020 event.
The stage, though, had earlier been beset by a number of crashes as several riders went down because of the wet conditions, including Ineos Grenadiers' Pavel Sivakov.
After an early break away, spearheaded by Michael Schar, Cyril Gautier and Fabien Grellier, there was a crash down towards the finish line on the Promenade Des Anglais on the first circuit.
Irishman Sam Bennett was one of the riders to suffer a fall which resulted in a wheel change, while Miguel Angel Lopez needed a new bike before the ascent of the category three climb up the Cote de Rimiez - which was taken by Fabien Grellier for Total-Direct Energie.
As the surface became more treacherous, Sivakov, who also collected a flat tyre, Benoit Cosnefroy (AG2R La Mondiale) and Christophe Laporte (Cofidis) were also among fallers in the rain.
Russian Sivakov tried to make up for lost time, but appeared to be struggling with injury to his arm and side following the crash as team-mate Luke Rowe looked to navigate a safe path at the head of the peleton.
Colombian Nairo Quintana and Julian Alaphilippe, expected to be battling out in the general classification, were both also involved in falls, as was Australian Caleb Ewan, who had been one of the stage favourites, before the pace was dropped.
However, Sivakov - a key part of the Ineos team to support defending champion Egan Bernal - looked to still be in some trouble, with a cut to his left arm and ripped shorts while European road race champion Giacomo Nizzolo was another to be struggling to recover ground at the back.
German Tony Martin took on the role of patron of the peloton to try to keep everyone safe, signalling for a temporary halt to racing tactics with a neutralised descent to get the riders safely around the hairpins and on towards the finish.
As the final 18 kilometres approached, there was some aggressive movement again as Cosnefroy went on a lone attack.
The weather had cleared by the time the peleton approached the Promenade Des Anglais for the second time, but there was another mass collision just under three kilometres from the finish.
As the sprinters were all being lined up, it looked anybody's race and Kristoff came through to take the line ahead of Pedersen for Trek-Segafredo with Cees Bol (Pro-Cyling) taking third place.
Join our new commenting forum
Join thought-provoking conversations, follow other Independent readers and see their replies