The 26-year-old Jumbo-Visma rider won the 194.5km opening stage in a time of 4:22:47, with Peter Sagan (Bora-Hansgrohe) second and Caleb Ewan (Lotto-Soudal) third.
With the peloton all together, Michael Matthews (Team Sunweb) started the sprint 300m from the finish, but Sonny Colbrelli (Bahrain-Merida) and Sagan burst past him.
The latter just missed out on taking the stage victory as Teunissen edged it.
“I cannot believe it. We were working for weeks, months to bring Dylan [Groenewegen] here to the win and yellow jersey, and then with 1.5km to go everything disappears because he goes down in a crash,” said the stage winner, who also won this year’s ZLM Tour.
“Then I thought I’m still here, still fresh so we can try it. Then I saw everyone dying in the last metres – even Sagan I was catching up on. I just took him on the line and like I said it’s beyond imagining. It’s unbelievable.”
Teunissen said that he could not clearly see if Groenewegen crashed or not, so he just stayed in position and then he heard that he went down.
“I felt good because we were in a good position. Then I thought I’ll go for it. I still had Wout [Van Aert] with me, he also could do something, and it was just enough.”
Soon after the start of the stage a four-man break, which consisted of Greg van Avermaet (CCC Team), Mads Wurtz Schmidt (Katusha-Alpecin), Natnael Berhane (Cofidis Solutions Credits) and Xandro Meurisse (Wanty-Grobert Cycling Team), formed.
They had a maximum gap of three minutes and 20 seconds to the peloton as they reached the Muur van Geraardsbergen.
Van Avermaet was the fastest rider to the summit of the 1.08km climb, which resulted in him becoming the first King of the Mountains of the Tour and the first Belgian to lead this classification since Thomas De Gendt and Jasper Stuyven three years ago.
Shortly afterwards, Van Avermaet was dropped, which left three men out front.
With 71km remaining it was over for the breakaway after a surge from the peloton towards the intermediate sprint, which Sagan took.
Stéphane Rossetto (Cofidis), who is making his first appearance in the Grand Tour, went on the attack solo with 55km to go.
He had a maximum gap of one minute and 45 seconds before reaching the final 30km.
The peloton made the catch with 9km remaining before the final attacks.