La première étape était un prologue en boucle de 8,1 kilomètres tournant autour de l'ancien aéroport militaire de Quinto. Un vent défavorable a perturbé les derniers partants et c'est l'australien Cameron Meyer qui s'empare du maillot jaune.

La seconde étape reliait Quinto à Crans-Montana, station de ski culminant à 1672 mètres. Cette première arrivée en côte se devait de faire des écarts, d'autant plus que les coureurs auraient dût franchir dès le kilomètre 29 le Nufenen-Pass, un col classé hors catégorie dépassant les 2000 mètres. Malheureusement, le col est fermé et le départ ne sera finalement donné qu'à Ulrichen. Cette étape a vu la victoire de Bauke Mollema et la troisième place de Thibaut Pinot est à souligner.

La troisième étape allait de Montreux à Meirigen et le sommet d'un col de première catégorie était placé à 21 kilomètres de l'arrivée. Un groupe de 15 coureurs passent le col en tête, dont Peter Sagan. La descente sur la chaussée mouillée était très technique, et un groupe de quatre coureurs, composé du suisse Mathias Frank(BMC), de Alberto Rui Costa (Movistar), Roman Kreuziger (Astana) et Peter Sagan(Cannondale) arrive dans la ville et c'est le slovaque qui s'impose. Frank prend le maillot de leader.

La quatrième étape, reliant Innertkirchen à Buochs, empruntant la route de deux cols de seconde catégorie, trop loin de l'arrivée pour faire la décision, et un col de quatrième catégorie, placée à 25 kilomètres de l'arrivée mais trop roulant pour faire la sélection. La course se termine donc au sprint et c'est le français Arnaud Démare qui remporte l'étape, devant Matthews Goss (Orica) et Tyler Farrar (Garmin). Il met fin à dix ans de disette tricolore sur le tour de Suisse.

La cinquième étape, qui reliait Buochs à Leuggern, à vue le Norvégien Alexander Kristoff ( Katusha) s'imposer au sprint en coiffant sur la ligne Peter Sagan (Cannondale) et Arnaud Démare (FDJ). Le final en faut plat montant est convenu au sprinteur norvégien, pour lui offrir sa cinquième victoire de la saison.

La sixième étape emmenait les coureurs à Meilen. Des difficultés étaient encore au rendez vous, avec deux ascensions de troisième catégorie. Mais ces col n'ont pas été décisif puisque une échappée composée de quatre coureurs est allée au bout, avec près de 11 minutes d'avance sur le peloton. Sous la flamme rouge, grégory Rast (radioshack) porte une accélération décisive et s'envole vers la victoire. Comme aucun coureur n'était dangereux au général, Frank garde le maillot de leader.

La septième étape allait de Meilen à La punt, et empruntait des cols de plus en plus dur. Après une première moitié d'étape sans difficulté, à part un col de troisième catégorie au kilomètre 52, la route s'élevait pour grimper au sommet d'un col classé en première catégorie, suivie d'une descente composée de moyens et de faibles pourcentage négatif, les coureurs devait escalader le col de L'Albula, culminant à 2315 mètres. Suivait ensuite une descente de dix kilomètres menant à la ligne d'arrivée. Rui Costa (Movistar) remporte l'étape mais ne s'empare pas du maillot jaune à cause de l'arche gonflable signalant aux coureurs qu'il reste deux kilomètres. Le ballon s'étant dégonflé, les trois coureurs de tête (Bauke Mollema, Tejay Van Garderen et Rui Costa) ont perdu de précieuses secondes. Ce n'est que partie remise puisque le portugais de la Movistar ne pointe qu'à 13 secondes de Frank, toujours leader..

La huitième étape reliait Zernez à Bad Ragaz. Un col de troisième catégorie vient corser le final. La côte fait exploser le paquet et un groupe d'une trentaine de coureurs se dispute la victoire. Peter Sagan a encore une fois été le plus fort, il remporte sa seconde victoire sur ce tour de Suisse.

L'ultime étape était un contre la montre de 26,8 kilomètres, reliant Bad Ragaz à Flumserberg. Cette dernière étape était composé de deux parties: la première de 16,5 kilomètres pendant lesquelles la pente ne s'élevait pas, puis une seconde ou la pente était de dix pour cent de moyenne. Cette seconde partie faisait les dix derniers kilomètres de l'étape. Rui Costa remporte le chrono et il fait d'une pierre deux coups puisqu'il prend le maillot jaune. Bauke Mollema prend la deuxième place, à plus d'une minute du portugais. Roman Kreuziger complète le podium et Thibaut Pinot termine quatrième. Le grand battu du jour est bien sûr le suisse Mathias Frank, qui concède deux minutes sur le chrono et est relégué à la cinquième place du classement général. Le portugais signe donc un doublé, puisqu'il avait déjà remporté l'épreuve l'an dernier.

Tour de suisse : Rui Costa récidive
Retour à l'accueil