He broke away on the final climb, about five kilometers before the finish line, and no rival managed to follow him.
Second place went to Austrian Felix Gall, 49 seconds behind. The podium was completed by Australian Jai Hindley, 58 seconds behind the winner.
The previous race leader, Portuguese Afonso Eulalio, failed on the final climb and crossed the finish line almost three minutes behind Vingegoro.
The young Portuguese retained second place in the overall standings, two minutes and 26 seconds behind the Dane, while the Gaul moved up to third, 24 seconds behind Eulalio.
The fifteenth stage is on Sunday from Voger to Milan and is 157 kilometers long.