Belgian Dylan Teuns won the sixth stage of the Tour de France, a 160.5-km ride from Mulhouse as Dan Martin and Nicolas Roche enjoyed contrasting days on the general classification.

Defending champion Geraint Thomas gained time on his rivals in a brutal finish as several top guns cracked in the lung-busting ascent to La Planche des Belles Filles.

Teuns prevailed after a long breakaway at the end of the 160.5km ride from Mulhouse ahead of Italian Giulio Ciccone, who claimed the overall leader's yellow jersey to follow his first place in the mountains classification at the Giro d'Italia.

But all eyes were on the overall contenders in the 7km final climb at an average gradient of 8.7% that featured a final gravelled section where standing up on the pedals -- a usual position for the pure climbers -- was almost impossible.

Thomas took full advantage of the terrain to produce brutal acceleration and take fourth place, 1:44 behind Teuns, who snatched his maiden stage win on a grand tour.

France's Thibaut Pinot, who had been tagged as the pre-stage favourite on an ascent situated 15km from his home town, reacted swiftly in the last 200 metres on asphalt to limit the damage to a two-second loss.

Thomas's Ineos team mate Egan Bernal of Colombia appeared less fresh and lost nine seconds to the Briton, prolonging the status quo in the team's shared leadership.

Overall, Ciccone leads France's Julian Alaphilippe, who wore the yellow jersey in the morning, by six seconds after the Deceuninck-Quick Step rider had to settle for sixth place.

"It's an incredible day, I just can't realise. It's the dream of any person who loves cycling," said the 27-year-old Ciccone, who snatched the jersey thanks to 14 bonus seconds he grabbed at top of the Col de Chevreres and by finishing second in the stage.

Among the top contenders, Thomas is fifth, 49 seconds behind, and leads sixth-placed Bernal by four seconds and seventh-placed Pinot by nine.

Twice champion Vincenzo Nibali, who was waiting for that stage to assess his form after finishing second overall in a demanding Giro d'Italia in May, lost 51 seconds to Thomas, whom he now trails by 1:07 overall.

Dan Martin was 14th on the gruelling stage, just under two minutes down on Teuns and while he lost 18 seconds on the yellow jersey, he jumped from 35th to 18th on the general classification.

Nicolas Roche endured a tough day on the saddle and lost more than 16 minutes on Ciccone, dropping from 19th to 51st position overall.