Australian Cadel Evans began the day only 1min 26sec behind the Italian with two key mountain stages to go, but flattered to deceive on his way to finishing nearly three minutes behind.
Ahead of the two mountain stages in the Dolomites, which may have to be altered depending on the severity of the wintry weather expected at high altitude, Nibali now leads Evans by 4:02.
Colombian Rigoberto Uran is in third place overall, only a handful of seconds adrift of Evans, with former pink jersey champion Michele Scarponi moving up to fourth at 5:14.
Astana team leader Nibali, the 2010 Tour of Spain champion and runner-up on the 2011 Giro d'Italia, came to this year's race extra determined having been pushed into third place by Bradley Wiggins at last year's Tour de France.
However few expected the Italian to dominate as he did on a rolling, uphill course that was suited to the climbing specialists.
Spaniard Samuel Sanchez, whose overall victory hopes have faded steadily since the start of the three-week race, set the early pace from among the big names in a time of 45:27.
It allowed Euskaltel's team leader to take the provisional lead with a time that was 22secs faster than Italian Damiano Caruso, but Sanchez was unceremoniously pushed into second place when Nibali, punching his arms in triumph, posted a time that was 58secs faster.
Caruso (Cannondale) finished third on the stage at 1:20, with Scarponi (Lampre) fourth at 1:21 and Uran (Sky) sixth at 1:26.
Wiggins began the Giro as Nibali's main threat, but the Englishman, as well as Canada's defending champion Ryder Hesjedal, quit the race due to illness last week.
The race finishes on Sunday with a mainly flat 197 km stage from Riese Pio X to Brescia.
Stage 18 results (country/team):
1. Vincenzo Nibali (Italy / Astana) 44:29"
2. Samuel Sanchez (Spain / Euskaltel) +58"
3. Damiano Caruso (Italy / Cannondale) +1:20"
4. Michele Scarponi (Italy / Lampre) +1:21"
5. Rafal Majka (Poland / Saxo - Tinkoff) +1:25"
6. Rigoberto Uran (Colombia / Team Sky) +1:26"
7. Carlos Betancur (Colombia / AG2R) +1:32"
8. Stef Clement (Netherlands / Blanco) +1:36"
9. Dario Cataldo (Italy / Team Sky) +1:41"
10. Danilo Di Luca (Italy / Vini Fantini) +1:52"
11. Evgueni Petrov (Russia / Saxo - Tinkoff) +1:54"
12. Przemyslaw Niemiec (Poland / Lampre) +1:56"
13. Fabio Duarte (Colombia / Colombia) +1:59"
14. Wilco Kelderman (Netherlands / Blanco)
15. Domenico Pozzovivo (Italy / AG2R) +2:11"
16. Franco Pellizotti (Italy / Androni Giocattoli) +2:12"
17. Ben Gastauer (Luxembourg / AG2R) +2:14"
18. Francis Mourey (France / FDJ) +2:15"
19. Jose Herrada (Spain / Movistar) +2:16"
20. Tom Danielson (U.S. / Garmin) +2:21"
Overall classification:
1. Vincenzo Nibali (Italy / Astana) 73:55:58"
2. Cadel Evans (Australia / BMC Racing) +4:02"
3. Rigoberto Uran (Colombia / Team Sky) +4:12"
4. Michele Scarponi (Italy / Lampre) +5:14"
5. Przemyslaw Niemiec (Poland / Lampre) +6:09"
6. Rafal Majka (Poland / Saxo - Tinkoff) +6:45"
7. Carlos Betancur (Colombia / AG2R) +6:47"
8. Mauro Santambrogio (Italy / Vini Fantini) +7:30"
9. Benat Intxausti (Spain / Movistar) +8:36"
10. Samuel Sanchez (Spain / Euskaltel) +9:34"
11. Domenico Pozzovivo (Italy / AG2R) +9:45"
12. Robert Gesink (Netherlands / Blanco) +10:19"
13. Franco Pellizotti (Italy / Androni Giocattoli) +10:27"
14. Tanel Kangert (Estonia / Astana) +11:02"
15. Yury Trofimov (Russia / Katusha) +11:24"
16. Robert Kiserlovski (Croatia / RadioShack) +12:05"
17. Sergio Henao (Colombia / Team Sky) +15:24"
18. Wilco Kelderman (Netherlands / Blanco) +17:03"
19. Evgueni Petrov (Russia / Saxo - Tinkoff) +20:20"
20. Darwin Atapuma (Colombia / Colombia) +25:58"