Castrillo climbs to Vuelta stage 15 win as Roglic closes in on red jersey
Castrillo (Kern-Pharma) was part of a leading trio on the gruelling Cuitu Negru climb to the finish and made his move with three kilometres to the end of the 143-km ride from Infiesto to Valgrane-Pajares.
In the final kilometre, he glanced over his shoulder to see Aleksandr Vlasov (Red Bull-Bora-Hansgrohe) appear through the fog, but Castrillo found another burst of energy to hold off the Russian, with Pavel Sivakov of France coming in third.
"When Vlasov came in, I took a little rest, I took a little breath and once again I decided to speed up and I did it," Castrillo said.
Three-times former champion Primoz Roglic (Red Bull-Bora-Hansgrohe) finished fifth, coming in 38 seconds ahead of the red jersey, Australia's O'Connor (Decathlon-AG2R La Mondiale), who now holds a slender 43-second lead going into the final week.
A large breakaway group was whittled down to seven riders by the time they began climbing Cuitu Negru, with 19 kilometres to the finish, and a three-minute gap to the peloton, but only three men were able to stay away.
Castrillo, Vlasov and Sivakov (UAE Team Emirates) managed to hold a large enough lead to ensure the battle for the stage win came down to this trio, as behind them the peloton crumbled, leaving only the general classification leaders to the fore.
Roglic managed to drop O'Connor, and while he was never going to catch the leaders, today was a day when the Slovenian was expected to close in on the red jersey, if not take it back, having lost it after stage six.
Up ahead, Castrillo and Vlasov were locked in a war of nerves, and legs, as they grimaced their way to the end, hunched over the bikes, but the Spaniard, as he had done on stage 12, held firm to take a second stage win on his maiden Grand Tour.
O'Connor dug deep, limiting the damage as much as possible, and lives to fight another day in the red jersey, and will welcome Monday's rest day before tackling the final six stages.
Tuesday's stage 16 will be an 181.5-km ride from Luanco to Lagos de Covadonga.