The Irishman rode a textbook 209-kilometre race from Estepona to Vejer de la Frontera, saving himself all day before springing clear of the bunch in the final kilometres.
It looked for a moment as if the Team Sky man would snatch not only the race leader’s red jersey but also stage victory after five hours in the saddle.
When Samuel Sanchez (BMC Racing) attacked with exactly 1.5km remaining on the short, steep ramp up to the finish, Roche jumped clear in pursuit. He caught the Spaniard before launching another late attack.
A depleted peloton were only a few seconds back with Katusha and Tinkoff-Saxo setting the pace for Peter Sagan (Saxo-Tinkoff) and Alejandro Valverde (Movistar), respectively.
Roche attacked Sanchez in the final few hundred metres and went past him, but he was agonisingly caught by Sagan and Valdverde, with Valverde getting the verdict. To compound Roche’s misery, Dani Moreno (Katusha) nabbed third, ensuring Roche didn’t secure any bonus seconds.
Overnight race leader Esteban Chaves (Orica-GreenEDGE) was only three seconds behind Roche, as was second-placed Tom Dumoulin (Giant Alpecin) so the order of the top three overall remained the same. Chaves leads from Dumoulin by five seconds, with Roche in third, 12 seconds back having gained three seconds.
Dan Marin (Cannondale-Garmin) was fourth on the opening stage and was in the same position overall starting yesterday.
However, with Valverde taking the 10-second win bonus, he overtook over Martin in the general standings, with the Irish rider in fifth place some 27 seconds down on leader Chaves.
“The last two days have been incredibly hard and the heat doesn’t help,” said Martin afterwards.
“Mentally I’m hungrier than ever but we’ll have to see if my body can handle it.”
Today’s stage takes the riders 167 pan-flat kilometres from Rota to Ronda and a bunch sprint is the expected outcome.