Der Vorjahressieger Wladimir Karpez verzichtete aufgrund eines Handbruchs auf die Teilnahme. Der Gewinner von Paris–Roubaix 2008 Tom Boonen wurde nach dem positiven Test auf Kokain im Vorfeld der Tour de Suisse von Organisatoren ausgeschlossen. Der Führende der UCI Protour 2008 Damiano Cunego war hingegen am Start.
Die erste Etappe führte mit flachem Profil rund um Langnau im Emmental. David Loosli, Steve Zampieri und Íñigo Landaluze bildeten die Ausreißergruppe. Loosli gewann beide Zwischensprints und beide Bergwertungen (beide dritte Kategorie). Der letzte Berg, der Chuderhüsi, war zu steil für die meisten Sprinter. Trotzdem holte das Hauptfeld kurz vor dem Ziel die Ausreißer. Óscar Freire entschied den Massensprint.
Das Finale der zweiten Etappe führte hoch zum Flumserberg (erste Kategorie). Zwischendurch gab es noch zwei weitere Möglichkeiten Bergpunkte zu sammeln. Diese holten sich vor allem David Loosli und Martin Elmiger. Loosli verteidigte die Führung in der Sprint- und Bergwertung. Die Entscheidung im Etappenfinale suchte Stijn Devolder zu früh. Er wurde eingeholt und am Ende nur Siebenter. Es siegte Igor Antón.
Die Fluchtgruppe des Tages bestand aus Hervé Duclos-Lassalle (Cofidis) und René Weissinger (Volksbank), nach zehn Kilometern schloss Jeff Louder (BMC Racing) auf. Ihr Vorsprung wuchs zwischenzeitlich auf bis zu 7 Minuten und 30 Sekunden. Weissinger gewann beide Zwischensprint und holte sich so das Sprinttrikot. Die Ausreißer wurden zehn Kilometer vor dem Ziel gestellt. Die letzte Bergwertung der 4. Kategorie gewann David Loosli (Lampre). Den Massensprint gewann nach guter Vorarbeit von Greg Van Avermaet Robbie McEwen vor Óscar Freire.
Auch die vierte Etappe bot eine gute Gelegenheit für einen Massensprint. Es gab nur zwei Bergwertungen der dritten Kategorie (Schellenberg und Sankt-Luzisteig). Die Fluchtgruppe bestand aus Matej Jurčo, Jérôme Pineau und Jonathan Garcia. Pineau gewann die Bergwertungen, und Jurčo die Zwischensprints. Wie am Vortag hießen die ersten Drei McEwen, Freire und Ciolek.
Die 190 Kilometer lange Etappe startete in Domat/Ems im Kanton Graubünden. Bis Disentis folgte man den Lauf des Vorderrheins. Bei Kilometer 14 kam in Flims die erste Bergwertung (3. Kategorie). Die Fahrt ging dann nach Süden, zum Lukmanierpass (1. Kategorie, 1940 Meter hoch) bei Kilometer 70. Der Abstieg führte nach Biasca im Kanton Tessin. Auf den letzten fünfzig Kilometer folgte die Passhöhe des Monte Ceneri (3. Kategorie), ein Anstieg in Cademario (2. Kategorie), 16 Kilometer vor dem Ziel. Die Abfahrt führte zum Zielort Caslano.
Hinauf nach Cademario gab es weitere Angriffe. Stijn Devolder (Quick Step) und Sergej Iwanow (Astana) setzten sich ab, aber die Gruppe des Führenden Igor Antón setzte nach. Am Ende des Anstiegs griff Fränk Schleck (Team CSC), gefolgt von Markus Fothen (Gerolsteiner), an. In der Abfahrt holte Fothen Schleck ein, der aber vier Kilometer vor dem Ziel stürzte. Fothen gewann die Etappe in Caslano, Schleck kam mit fast 3 Minuten Rückstand auf Platz 44 ins Ziel.
Sergej Iwanow griff nochmals an und wurde Zweiter. Die Gruppe von Igor Antón, bestehend aus 17 Fahrern, kam mit 57 Sekunden Rückstand ins Ziel. Damiano Cunego verlor fast eine Minute auf Antón.
Die Gruppe der Ausreißer war groß. In ihr Fahrer wie José Rujano, Giovanni Visconti, Maxim Iglinski und Jens Voigt. Im letzten Anstieg wurden alle Fahrer wieder eingeholt. Im Sprint war Kim Kirchen der Stärkste vor Andreas Klöden. Antón verlor eine halbe Minute, Kirchen holte das gelbe Trikot.
Nachdem zwei Gruppen vergeblich versucht hatten sich vom Hauptfeld abzusetzen, formierte sich eine Gruppe von vier Fahrern: Roman Kreuziger (Liquigas), Sébastien Rosseler (Quick·Step), Ronny Scholz (Gerolsteiner) und Johan Vansummeren (Silence-Lotto). Kreuziger, Zweiter in der Gesamtwertung, ließ sich nach einigen Kilometern zurückfallen, da das Feld die Ausreißer nicht entscheidend wegkommen ließ. Die drei Fahrer fuhren bis 17 Kilometer vor dem Ziel vor dem Feld.
Kurz vor dem letzten Hügel griffen Leif Hoste (Silence-Lotto), Maxim Iglinski (Astana) und David Loosli (Lampre) an, es folgten Fabian Cancellara und Markus Fothen, später auch noch Philippe Gilbert und Kim Kirchen. Doch Cancellara griff wieder an und konnte sich von seinen Gefährten lösen. Diese wurden auf den letzten fünf Kilometern vom Hauptfeld gestellt. Cancellara fuhr im Alleingang nach Lyss und siegte mit zwei Sekunden Vorsprung auf das Hauptfeld, angeführt von Erik Zabel und Robbie McEwen.
Stijn Devolder hatte einen schwarzen Tag und verlor mehr als 6 Minuten auf Kreuziger, der mit seinem Etappensieg das gelbe Trikot von Kim Kirchen übernahm.
Die letzte Etappe bot ein recht flaches Profil mit einer Bergwertung der vierten Kategorie rund 10 Kilometer vor dem Ziel. Die Chance für den Sieger der siebten Etappe Fabian Cancellara in seiner Geburtsstadt Bern zu gewinnen. Die frühe Fluchtgruppe mit Hervé Duclos-Lassalle (Cofidis), Darren Lill (BMC Racing), Francisco Pérez Sanchez (Caisse d’Epargne), Maarten Tjallingii (Silence-Lotto) und René Weissinger (Volksbank) wurde kurz vor dem letzten Gipfel gestellt.
Silence-Lotto führte das Feld an. 1500 Meter vor dem Ziel versuchte Philippe Gilbert sein Glück, nur Cancellara konnte nachsetzen und siegte knapp. Da der Führende der Punktewertung Freire nicht an den Start der letzten Etappe gegangen war, sicherte sich so Cancellara das Punktetrikot. In der Gesamtwertung gab es keine Veränderungen: Der junge Tscheche Roman Kreuziger (Liquigas) errang den ersten großen Erfolg seiner Karriere.
Trikots im Tourverlauf
Die Tabelle zeigt den Träger des jeweiligen Trikots während der einzelnen Etappe bzw. den Führenden der jeweiligen Gesamtwertung am Abend des Vortags an.