The 33-year-old Katusha rider completed the stage, which included a summit finish, in four hours, 24 minutes and 32 seconds, eight seconds ahead of fellow Spaniard and 2008 Tour of Spain winner Alberto Contador who finished second.
Spain's Alberto Valverde finished third, 13 seconds behind the leader.
The stage win allowed Rodriguez to boost his advantage over his nearest rivals in the overall standings.
He is 13 seconds ahead of second-place Contador - who is back from a two-year drugs ban - and 51 seconds ahead of Britain's Christopher Froome, the runner-up at this year's Tour de France.
Friday's 13th stage takes the Tour peloton on a 172.8km ride from Santiago de Compostela to Ferrol.
The Tour finishes on September 9 in Madrid.
Leading riders in the 12th stage of the Spanish Vuelta, a 190.5km ride from Vilagarcia de Arousa to Mirador de Ezaro on Thursday:
1. Joaquin Rodriguez (ESP/KAT) 4h24min 32sec
2. Alberto Contador (ESP/SAX) at 0:08s
3. Alejandro Valverde (ESP/MOV) 0:13.
4. Robert Gesink (NED/RAB) 0:20.
5. Chris Froome (GBR/SKY) 0:23.
6. Daniel Moreno (ESP/KAT) 0:23.
7. Igor Anton (ESP/EUS) 0:27.
8. Nicolas Roche (IRL/ALM) 0:31.
9. Przemyslaw Niemiec (POL/LAM) 0:33.
10. Gorka Verdugo (ESP/EUS) 0:36.
11. Sergio Henao (COL/SKY) 0:36.
12. Rinaldo Nocentini (ITA/ALM) 0:36.
13. Paolo Tiralongo (ITA/AST) 0:39.
14. Bauke Mollema (NED/RAB) 0:39.
15. Eros Capecchi (ITA/LIQ) 0:39.
16. Benat Intxausti (ESP/MOV) 0:43.
17. Laurens ten Dam (NED/RAB) 0:44.
18. Maxime Monfort (BEL/RSH) 0:47.
19. Damiano Cunego (ITA/LAM) 0:52.
20. Winner Anacona (COL/LAM) 0:52.
Overall standings:
1. Joaquin Rodriguez (ESP/KAT) 44h50min 35sec
2. Alberto Contador (ESP/SAX) at 0:13.
3. Chris Froome (GBR/SKY) 0:51.
4. Alejandro Valverde (ESP/MOV) 1:20.
5. Robert Gesink (NED/RAB) 2:59.
6. Daniel Moreno (ESP/KAT) 3:29.
7. Nicolas Roche (IRL/ALM) 4:22.
8. Andrew Talansky (USA/GRM) 5:17.
9. Laurens ten Dam (NED/RAB) 5:18.
10. Bauke Mollema (NED/RAB) 6:01.
11. Igor Anton (ESP/EUS) 6:08.
12. Winner Anacona (COL/LAM) 6:35.
13. Eros Capecchi (ITA/LIQ) 6:47.
14. Benat Intxausti (ESP/MOV) 6:51.
15. Maxime Monfort (BEL/RSH) 6:55.
16. Tomasz Marczynski (POL/VAC) 7:01.
17. Rinaldo Nocentini (ITA/ALM) 7:04.
18. Przemyslaw Niemiec (POL/LAM) 7:10.
19. Gorka Verdugo (ESP/EUS) 8:13.
20. Bart De Clercq (BEL/LTB) 8:25.