The 26-year-old Dubliner came in as part of a ten man group which featured yellow-jersey contenders Luis Leon Sanchez (Euskatel-Euskadi) and Ivan Basso (Liquigas-Doimo).
With Roche riding strongly towards the finish they distanced themselves from the majority of the bunch on the final climb of the day – the Montée Laurent Jalabert outside Mende.
It was another solid performance from Roche who continues to show good form in advance of the tougher mountain stages in the Pyrenees next week and lies in 14th place in the overall classification, just 6:44 off race leader Andy Schleck (Team Saxo Bank).
Alberto Contador exploded on the final climb to trim leader Schleck’s yellow jersey advantage.
Spaniard Contador (Astana), who is targeting a third Tour title in four years on July 25 in Paris, was beaten to the finish line on the 210.5-kilometre stage from Bourg-de-Peage to Mende by compatriot Joaquin Rodriguez.
But Contador clawed back a potentially crucial 10 seconds from Schleck and now trails the Luxembourg rider by 31 seconds as the Tour heads for the Pyrenees, beginning with today’s 196km 13th stage from Rodez to Revel.
Schleck, though, remains calm.
“Even if I lost the yellow jersey, it’s okay,” he said.
“If one of them took the lead, I would not really have cared because I am still only aiming to have the yellow jersey in Paris.”
Contador attacked halfway up the fifth and final climb of the day, the 3.1km category two ascent of the Montee Laurent Jalabert, so named after the Frenchman’s famous Bastille Day win in 1995.
The Spaniard caught and overtook his Astana team-mate Alexandre Vinokourov, who had accelerated out of the day’s break, and was joined by Rodriguez.
With 2km from the summit to the finish on the air strip of the Mende-Brenoux aerodrome, Contador and Rodriguez vied for the line, but the latter took the victory.
Vinokourov finished four seconds behind, while a group of five riders – including Schleck – followed.
The plateau allowed Schleck to recover some of the time lost to Contador on the ascent and the 25-year-old finished 10 seconds adrift to ensure he would stay in the maillot jaune for another day.