Rodriguez used an explosive burst of speed to win the stage that had followed the northern coast before turning inland for a finish at the picturesque Alto Naranco summit overlooking the rolling green hills near Oviedo.
The Catalan rider for Katusha got his first stage victory of this edition with a winning time of 4 hours, 16 minutes, 13 seconds.
Diego Ulissi of Italy and Spaniards Daniel Moreno and Samuel Sanchez were next at 11 second behind. Horner and Valverde finished 14 seconds behind.
"I told my team to go for it," Rodriguez said. "I told them that tomorrow would be too tough because Chris has shown he is so strong. So today was the last chance."
Rodriguez is 1:57 off Horner's pace in fourth, followed by Nicolas Roche at 3:49 back.
The penultimate stage is a 142-kilometer (88-mile) course that takes riders over three major summits and ends with of a special-category climb to the Alto de l'Angliru peak before the traditional finish in Madrid on Sunday.