The Italian finished in 44 minutes, 29 seconds on the 20.6-kilometre (12.8-mile) uphill route from Mori to Polsa in northern Italy for his first stage victory in this year's race. Samuel Sanchez was 58 seconds behind, while Damiano Caruso was third, 1:20 behind Nibali.
Nibali, who finished third and second in his last two Giro d'Italia races, extended his lead to 4:02 over Cadel Evans and remains on course to win his country's biggest cycling race for the first time. There are three stages remaining.
"With today's victory I've certainly taken another huge step and now I can control the advantage," Nibali said. "Let's hope the weather is good, apart from at the changes of the course. The climbs don't scare me because I feel good, I feel in form. Of course it would be easier to control the race with the team without going up the Gavia and the Stelvio. But I'm ready for anything."
Evans had a miserable day and finished the course in 25th place. At one point it even looked like Evans would be caught by Nibali, who started three minutes behind the Australian. Evans is now 10 seconds ahead of third-place Rigoberto Uran.
"It's not for lack of trying that I lost a minute or two minutes," Evans said. "I came to this Giro with high hopes, but not high expectations. My real objective was to give my best, and, until this point, I've made a few mistakes, but nothing big. So in that regard, in terms of giving my best, that's great.
"But of course you want to be winning — and that's maybe when your hopes rise above your capabilities. I'm unlikely to win, but I came here for training for the Tour de France. Second place at this point is not so bad."
Nibali has dominated this year's Giro to wear the pink jersey since the time trial in the eighth stage.
Evans had been looking to gain some time on this stage but was nowhere near Nibali, whose speed allowed him to move nearly 1 1/2 minutes ahead of the Australian Evans in the first half of the race. He extended that gap as rain fell heavily at the finish.
Sanchez had hoped for a stage victory after taking the lead by 22 seconds, but his time was annihilated by Nibali.
Friday's 19th stage — the first of two more mountain legs — has had to be altered because of avalanche threats and sub-zero temperatures. With snow and ice predicted, the Galvia and Stelvia passes have been cut from the route. The elongated 160km (99.42-mile) route from Ponte di Legno will still climb up to the original finish of Val Martello.
The Giro ends May 26 in Brescia.