Bauke Mollema (Blanco) won the sprint for second - eight seconds behind the winner - from Alberto Contador (Saxo Bank-Tinkoff Bank), Mauro Santambrogio (Vini Fantini), Chris Horner (Radioshack) and Froome (Sky).
Previous race leader Michal Kwiatkowski (Omega Pharma-Quick-Step) lost time after being dropped late on - he is now 24s down on Froome - while fellow GC hopeful Vincenzo Nibali (Astana) was all alone, nine seconds behind the second-placed group.
Froome has a 20-second lead on Contador - who earned six seconds on the Briton at the intermediate sprints - and Nibali with two stages left to race. Horner is fourth, at 37s.
“Contador lost some time yesterday and he tried to pull it back today. It was very hard for everybody after 230km, nobody had much left in the legs,” said Froome.
Spaniard Rodriguez attacked on the short 15% gradient climb up Via Salomone 1400m from the finish after keeping tabs on the attacking Froome and Contador, who on Saturday lost 15s on stage four winner Froome and was determined to fight his way back into contention on GC.
He then accelerated away on the flatter final kilometre to extend his advantage from 5s at the summit to 8s by the end.
“It was a stage that suited me but I didn’t expect it because I was feeling terrible – I thought I had bad legs, especially after all the rain we had this week,” Rodriguez said.
“This win really means a lot because there were a lot of good riders here and it’s never easy to beat them... I remember very well the final part of this stage and its incredibly tough stretch.”
The 230km stage from Ortona featured three categorised climbs as the race continued in the mountains for a second day.
The break of the day escaped after 20km and featured nine riders: Valerio Agnoli (Astana), Michael Schär (BMC), Maxim Belkov (Katusha), Damiano Cunego (Lampre-Merida), Sebastian Langeveld (Orica Greenedge), Stijn Devolder (Radioshack-Leopard), Juan Antonio Flecha (Vacansoleil-DCM), Cesare Benedetti (NetApp-Endura) and Oscar Gatto (Vini Fantini-Selle Italia).
Benedetti was dropped after almost crashing while their lead peaked at seven minutes after 65km.
Cunego broke away to claim mountains points on the 12km-long Passo Lanciano – 40km from the finish – while the rest of the escapees were caught by the speeding peloton, which had been led alternately by Sky, Omega Pharma-Quick Step, Cannondale and Ag2r-La Mondiale.
The Italian tried to stay out on the descent towards Chieti, but Sky – who have set a
furious pace this week thanks to Froome’s supporting cast of Chieti native Dario Cataldo, Sergio Henao and Rigoberto Uran – again took to the front to swallow him up 6km from the finish.
Then came the final climb. “I paid a price for the infernal rhythm of Froome’s team in the finale,” Nibali said of Sky’s pace.
Moreno Moser and Peter Sagan (Cannondale) were also dropped while Sky defended against an attack from Roman Kreuziger (Saxo-Tinkoff) and Andrey Amador (Movistar).
“The team pulled for the last 50km and did excellent work,” said Froome.
Kwiatkowski was dropped by the lead group just before Rodriguez’s burst, which he maintained impressively despite two steep climbs and three right-angle turns in the final kilometre.
King of the Mountains classification leader Francesco Failli (Vini Fantini) was forced to abandon after riding with a cracked rib.
Monday will be crucial as Tuesday’s final 9.2km individual time trial in San Benedetto del Tronto is flat and offers little hope of eating up large time differences.
“Tomorrow there will be another long, demanding stage: we're not fighting anymore to win the final classification, but we will try to take a good result anyway - my team-mates are in great shape," added Katusha rider Rodriguez.
“We should put one of us in the breakaway and then we will attempt something - we have nothing to lose.”