The Dutchman powered over the finish line ahead of Ilnur Zakarin (Katusha), Mikel Landa (Sky) and Nairo Quintana (Movistar), nabbing bonus seconds and extending his lead over Quintana by a further total of 24 seconds.
Dumoulin rallied to chase down and pass the Colombian who attacked the elite bunch with four kilometres to go on the final ascent. The pair were then joined by Zakarin and Landa, Quintana soon dropping slightly back.
Zakarin then fancied his chances, leading proceedings with just a few hundred metres to go. But Dumoulin, sensing a chance to further cement his lead, moved past the Russian to grab line honours.
“I really didn’t expect this, it’s something I had always dreamed about but I didn’t think I could do it," Dumoulin said.
"It was a really tough climb and when I couldn’t follow Quintana I remained focused, relaxed and rode at my own pace.
"At the end I still had something left it was incredible. It’s a good advantage to go into the last week. It’s still a long way to Milan.”
The stage start featured numerous attacks, but with just 131 kilometres of a mostly pan flat stage - bar the final climb - on the cards, the peloton was not keen to let anything stick. It allowed Natnael Berhane (Dimension Data), Sergey Lagutin (Gazprom-Rusvelo) and Daniel Martinez (Willier-Trestina) to pull clear after 30 kilometres but kept them on a short leash until the final climb as the big GC teams moved their leaders into position.
Of the GC leaders, Bauke Mollema (Trek-Segafredo) fared the worst on today's stage, finishing 22nd and one minute and 44 seconds behind Dumoulin. As a result, Thibaut Pinot (FDJ) and Nibali improved their position on the overall classification to third and fourth respectively.