Dutch rider Fabio Jakobsen overtook Wout van Aert right on the line for his first stage win on his debut Tour de France, while Van Aert took the yellow jersey for the first time on overnight.
Jakobsen had showed his prowess on the Spanish Vuelta, winning five stages, and clinched his first success in this race with a late burst to nick victory from Van Aert.
It has been a long road back for Jakobsen.
Two years ago, he was in an induced coma. He needed five hours of surgery on his skull and face after being sent flying through roadside crash barriers by Dylan Groenewegen near the finish line of the Tour of Poland.
"Today it's 'incroyable' as we would say in French. It's been a long process step by step. A lot of people have helped me come back so this victory is to pay them back," Jakobsen said. "I'm happy I still enjoy racing and I can win. The team kept me in good position in front at the end of the bridge."
It was a second win in two days for the Quick-Step Alpha Vinyl team after Yves Lampaert's win in Friday's time trial.
Van Aert took the yellow jersey with a six-second bonus for finishing second, to lead Lampaert by one second overall.
"It's a great pleasure for me to wear the jersey. I've tried to get it many times. I'm very happy and proud," Van Aert said.
He also has the green jersey for best sprinter and is Primož Roglič's teammate on the Jumbo-Visma team.
"We have big ambitions," Van Aert said.
Two-time defending champion Tadej Pogačar stayed third overall and was eight seconds behind Van Aert.
Pogačar remained nine seconds ahead of his main rival Roglič, who is eighth overall. They both finished in the main pack and did not take time off each other. Roglič was the Tour runner-up in 2020 and has won the past three Spanish Vueltas.
After the peloton crossed the immense Great Belt suspension bridge, several riders fell near the back of the pack with two kilometers left to the finish in Nyborg.
Van Aert seemed set for victory after overtaking Danish hope Mads Pedersen, but Jakobsen surged from fifth to win.
"My legs were in pain, but this is what we train for," Jakobsen said. "For 15 years I've been dreaming of this and I want to say a big thanks to Denmark for the warm welcome and the encouragement."
Pedersen finished the stage in third.
After his surprise win, Lampaert wore yellow as riders set off on the 202 kilometers (125 miles) from the port city of Roskilde to Nyborg in central Denmark.
The start was slightly delayed after Tim Wellens punctured and Simon Yates had mechanical issues.
Huge crowds packed the roadsides as the red-and-white wave of Danish enthusiasm continued.
Especially with Danish rider Magnus Cort forming an early breakaway group, along with Norwegian Sven Erik Bystrøm, and Frenchmen Cyril Barthe and Pierre Rolland.
Bright sunshine added to the feel-good factor, although at times fans got too close to the pack as Cort and Bystrøm pulled away from the French at the front.
Cort was a stage winner in 2018. Mogens Frey, the first Dane to win a Tour stage back in 1970, turned 81 on Saturday.
"I can't believe how many people were on the sides of the road cheering me on," said Cort, who has the polka-dot jersey for best climber after taking three bonus points along the route's three minor climbs. "I was impressed by this fervor. Cycling is a big part of Danish culture, everyone here had a bike growing up."
Cort faded entering the last 40 kilometers as Bystrøm was alone in front, while Roglič and Pogačar were near each other in the peloton some 30 seconds behind.
Meanwhile, Dutchman Martijn Tusveld, Austrian Patrick Konrad and Latvian Krists Neilands were involved in the day's first crash. Neilands crouched over his bike in pain and appeared to have an elbow injury.
With no one to help him, Bystrøm was caught with 30 kilometers left. Then, Cort was among riders who crashed approaching the bridge and Lampaert tumbled when he was on it. He got back up and worked hard to reach the peloton.
Stage 3 on Sunday is again for sprinters. It starts from Vejle on the Jutland Peninsula and ends in Sonderborg in southern Denmark after 182 kilometers of flats.
After a travel day, riders resume in France on Tuesday and tackle five small climbs on the route from the coastal city of Dunkerque to Calais.
The race ends on July 24 in Paris.