The Danish former Tour de France winner launched his initial attack on the Apennine ascent 5.5km from the top of the 13.6km climb, and only home favourite Giulio Pellizzari (Red Bull-Bora-Hansgrohe) was initially able to follow him.
However, a kilometre later, Pellizzari caved in trying to follow the pace of Vingegaard as the prolific Dane accelerated away from the Italian.
Felix Gall (Decathlon CMA CGM) recovered well to work his way past Pellizzari and settled into a great stride in the final kilometres as he crossed the line in second place just 13 seconds behind Vingegaard, who followed in the tracks of riders including Eddy Merckx, José Manuel Fuente, Moreno Argentin, and Nairo Quintana to win at Blockhaus.
Australian Jai Hindley, who triumphed at Blockhaus in 2022 before going on to win that year's Giro, finished third.
Overall leader, Portugal's Afonso Eulalio (Bahrain Victorious), put in a brave ride, coming in less than three minutes after Vingegaard to hold onto the pink jersey.
"Today we wanted to go for the win, and I'm happy that I could finish it", said Vingegaard after the race and praised his teammates.
The Dane is asked if it was the plan all along to attack with 5.5 kilometers to go. "We kept it a little open to see when the momentum was there. There was a lot of wind and sometimes a little bit of a headwind."
"I'm happy that I could take some time back on the leader's jersey, and it was a good day for the team and me. Taking time back and taking time on my competitors... that's good", says Vingegaard.
Jonas Vingegaard became the 115th rider in history to win a stage in all three Grand Tours – and the fourth Dane after Jesper Skibby, Mads Pedersen, and Magnus Cort.
The 109th men’s Giro ends on May 31 in Rome.
