Alberto Contador (Tinkoff-Saxo) had not travelled to Sheffield to view the stage but took to the front up the day's final climb, the brutally steep, 800m long Jenkin Road.
The Spaniard was unchallenged until, within sight of the summit, defending champion Chris Froome (Team Sky) stretched his legs.
The descent saw and run-in saw numerous attempts to break off the front, all of which floundered until Nibali burst clear inside the final 2km.
The Italian champion, nicknamed the Shark, bared his teeth and led by 50metres under the flamme rouge at 1km to go and his rivals looked to each other to react.
World champion Rui Costa (Lampre) led the pursuit, with Froome on his wheel, but the lack of a coordinated chase ensured Nibali would win and he was able to celebrate a first Tour stage win of his career.
Belgian Greg van Avermaet (BMC Racing) was second, two seconds behind, with Michal Kwiatkowski (Omega Pharma-QuickStep) third.
Contador was 13th and Froome 19th, the Briton moving to fifth overall after his sixth-placed finish in Harrogate on day one.
Germany's Kittel relinquished the fabled yellow jersey without much of a defence on a challenging day for the sprinter in the Yorkshire countryside.
Kittel had a day to forget, finishing well adrift, but will chase a sixth Tour stage win in two editions in Monday's 155km third stage from Cambridge to The Mall in London.