Race leader Rodriguez (Katusha) outsprinted GC rival Ivan Basso (Liquigas) to lead a select group of six riders across the line and preserve his maglia rosa after a brutal day in the Dolomites.
Rodriguez maintains a 30-second lead over Garmin-Barracuda’s Ryder Hesjedal in the overall standings after the Canadian took third place in the stage ahead of new white jersey Rigoberto Uran (Team Sky), defending champion Michele Scarponi (Lampre) and stage eight winner Domenico Pozzovivo (Colnago).
Rodriguez dedicated his win to fellow Catalan rider Xavi Tondo, who passed away a year to the day after a freak domestic accident.
"Today it was a special day and I dedicate this victory to my friend Xavi Tondo who died a year ago," said Rodriguez.
The Spaniard underlined the fierce pace set by the Liquigas team of Basso, but stressed that his main rival was now Hesjedal.
"Liquigas worked very hard today and if they're going to keep this pace then it will be hard for everyone. But Hesjedal is the favourite now for the final win. He's the best in the ITT and we will have to attack him," said Rodriguez.
While there was no change in the top three – with Basso completing the trio, 1:22 down on Rodriguez – it was a bad day for Astana, whose leaders Paolo Tiralongo and Roman Kreuziger both lost significant time.
Tiralongo, the Italian winner of stage seven, crossed the line almost three minutes off the pace to drop from fourth to eighth in the GC, while Czech Kreuziger cracked on the Cat.2 Forcella Staulanza – the third of four classified climbs – and finished more than 10 minutes off the pace.
Despite a solid second place, two-time Giro winner Basso will feel like Wednesday’s stage from Falzes was an opportunity missed after his Liquigas team once again dictated play.
A group of five riders - featuring blue jersey Matteo Rabottini (Farnese Vini), Kevin Seeldraeyers (Astana), Matteo Montaguti (Ag2r-La Mondiale), Jose Serpa (Androni) and the late Tondo's former Movistar team-mate Branislau Samoilau - broke clear on the first climb of the day after 40km, building up a maximum lead of six minutes over the Cat.2 Passo di Valparola.
The Euskaltel team of stage 16 winner Jon Izagirre combined with Liquigas to reduce the deficit before setting up their man Mikel Nieve for a counter-attack on the second climb of the day, the testing Cat.1 Passo Duran.
Nieve caught the leaders on the descent, not before Belgium's Seeldraeyers stole ahead after picking up the points at the intermediate sprint at Zolto Alto.
With Liquigas pulling heavily on the front, the break soon sat up at the start of the Cat.2 Forcella Stalanza climb. Kreuziger was clearly suffering an off-day and was soon distanced as Liquigas looked to capitalise on the misfortune of their former employee.
The peloton was reduced to a select group of 25 riders as they crossed the summit; four of whom belonged to Liquigas, who threw down the hammer on the descent and started the Cat.1 Passo Giau - 27km from the finish - in total control.
With Damiano Caruso peeling off, Basso was left with trusty mountain lieutenant Sylvester Szmyd and countryman Eros Capecchi in what looked like a dominant situation.
But Szmyd suffered a mechanical problem at the most inopportune moment and was forced off the back. Capecchi set a fierce pace to rip apart the pack, but he soon hit the wall, leaving Basso to fend for himself.
Basso dictated a fierce pace and soon distanced the likes of Tiralongo, John Gadret (Ag2R-La Mondiale), 2004 winner Damiano Cunego (Lampre) and overnight white jersey Sergio Henao (Team Sky).
The Giro’s six strongest riders were left, with Hesjedal matching Basso on the front, while Uran, Scarponi, Pozzovivo and Rodriguez all took a passive role in the gruelling ascent.
Just 500m from the top, the diminutive Pozzovivo came alive – his sudden burst of pace seeing both Scarponi and Uran drop back.
Pozzovivo led the quartet over the summit of the Passo Giau before handing the baton over to Hesjedal, who rode on the front for most of the 18km descent to the finish.
Uran caught the leaders inside the final 5km and Scarponi, who appeared to be suffering from cramps, joined with 2km remaining.
Basso made the initial move just over 1km from the finish, but was reeled in on a small cobbled section of road in the ski resort of Cortina.
The Italian then launched the final sprint inside the final 200m but was foiled by Rodriguez who passed with ease to take his second win of the race following his stage 10 scalp in Assisi last week.
After an active day for the race favourites, Thursday’s 149km stage 18 should offer some respite: the short and predominantly downhill stage is one for the sprinters and should offer world champion Mark Cavendish (Team Sky) the chance to add to his tally of three stage wins.
Two more stages in the high mountains then follow - including Saturday's queen stage atop the famous Stelvio - before the final 30km ITT in Milan on Sunday.