The Katusha rider, who finished second behind Portugal’s Rui Costa last Sunday after a tactical error from fellow Spaniard Alejandro Valverde (Movistar), beat his compatriot by 17 seconds in the one-day race.
Rodriguez attacked in the Villa Vergano climb with just under 10 kilometres left and never looked back.
Nibali, fourth in last weekend’s World Championships road race, was caught in a crash just ahead of the Muro di Sormano, a 1.9-km climb at an average gradient of 15.8 percent.
In the descent, Valverde and his Movistar team mate Nairo Quintana powered away from a group of favourites and were joined by three other riders.
He built a three-minute lead at the top of the Madonna del Ghisallo but was caught with 12 kilometres remaining, shortly before Rodriguez made his move.
The result meant Rodriguez overtook Britain’s Team Sky rider chris froome, who pulled out injured before the race, in the elite World Tour rankings.
- Joaquim Rodriguez (Spain / Katusha) 6:10:18″
- Alejandro Valverde (Spain / Movistar) +17″
- rafal majka (Poland / Saxo – Tinkoff) +23″
- Daniel Martin (Ireland / Garmin) +45″
- Enrico Gasparotto (Italy / Astana)
- Daniel Moreno (Spain / Katusha) +55″
- Pieter Serry (Belgium / Omega Pharma – Quick-Step)
- Franco Pellizotti (Italy / Androni Giocattoli)
- Ivan Santaromita (Italy / BMC Racing)
- Robert Gesink (Netherlands / Belkin)
- Ivan Basso (Italy / Cannondale)
- Thibaut Pinot (France / FDJ.fr)
- Juan Antonio Flecha (Spain / Vacansoleil)
- Ben Hermans (Belgium / RadioShack)
- Domenico Pozzovivo (Italy / AG2R)
- Nairo Quintana (Colombia / Movistar)
- Cyril Gautier (France / Europcar) +1:07″
- Tom Dumoulin (Netherlands / Argos)
- Greg Van Avermaet (Belgium / BMC Racing)
- Philippe Gilbert (Belgium / BMC Racing)