Team Sky rider Thomas attacked with six kilometres left on a frenetic final climb up La Rosiere, to finish 20 seconds ahead of team-mate Chris Froome and second-placed Tom Dumoulin.