La 1re étape se déroule en circuit autour de Berlin. Elle est remportée par le Néerlandais Nico Verhoeven au sprint. Lech Piasecki reprend 23 secondes à Nijdam et s'empare du maillot jaune.
L'après-midi, les coureurs s'affrontent dans un contre-la-montre par équipes. Cette deuxième étape est remportée par l'équipe Carrera avec une avance de 8 secondes devant l'équipe Del Tongo, celle du maillot jaune qui conforte sa tunique. Laurent Fignon perd encore une quarantaine de secondes avec son équipe Système U.
La 3e étape se déroule toujours en Allemagne, entre Karlsruhe et Stuttgart, et voit la prise de pouvoir d'un Suisse, Erich Maechler. Une première échappée constituée de Kim Andersen, Rolf Golz et Marc Madiot se fait reprendre vers le km 175. Dans la foulée, Erich Maechler avec 21 autres coureurs, dont fait partie le Français Charly Mottet, s'échappent. Le Suisse reprend plus de 3 minutes au peloton. Il devient le premier coureur helvétique leader du Tour de France depuis Fritz Schaer en 1953. La victoire d'étape revient quant à elle à Acácio da Silva qui rentre dans le top 5 et la bonne opération à Charly Mottet qui devient un des grands favoris du Tour.
La 4e étape, qui est une demi-étape, voit la victoire du Belge Herman Frison qui s'impose avec 1 min 8 s d'avance sur le peloton. Le maillot jaune reste sur les épaules d'Erich Maechler.
La 5e étape, qui se dispute l'après-midi de la 4e, est remportée par le Belge Marc Sergeant avec 13 secondes d'avance sur le peloton maillot jaune que garde Erich Maechler.
Entre Strasbourg (Bas-Rhin) et Épinal (Vosges), la 6e étape voit la victoire de Christophe Lavainne de l'équipe Système U. Le Français reprend la deuxième place du général à Jörg Müller mais le maillot reste solidement accroché à Erich Maechler.
Lors de la 7e étape, qui a lieu entre Épinal et Troyes (Aube), le premier sprint massif de ce Tour est remporté par Guido Bontempi qui est déclassé pour dopage dix jours plus tard et permet donc à Manuel Jorge Dominguez de remporter sa première victoire dans le Tour. Maechler conserve sa position de leader du classement général.
La première semaine a vu la domination d'Erich Maechler. Charly Mottet est le mieux placé des favoris en étant 6e au général. Laurent Fignon est très loin au général et ses chances de victoire s'amenuisent.
La 10e étape si dispute sous la forme d'un contre-la-montre individuel qui voit la victoire de Stephen Roche avec 42 secondes d'avance sur Charly Mottet et 53 secondes sur le Danois Jesper Skibby. Erich Maechler perd son maillot jaune au profit de Charly Mottet qui devient le grand favori pour la victoire finale. Dix ans après avoir porté le maillot jaune durant deux semaines sur le Tour de France 1977, Dietrich Thurau prend la seconde place du classement général avec 47 secondes de retard sur Mottet. Laurent Fignon perd à nouveau 3 min 33 s sur son coéquipier et désormais leader Charly Mottet. Le Colombien Luis Herrera perd quant à lui 9 minutes sur cette étape et donc toutes ses chances de succès au classement général.
La 11e étape, entre Poitiers (Vienne) et Chaumeil (Corrèze) voit la perte du maillot jaune de Charly Mottet. C'est son coéquipier Martial Gayant qui le récupère en remportant l'étape.
Entre Brive (Corrèze) et Bordeaux (Gironde), l'Américain Davis Phinney remporte au sprint la 12e étape. L'Irlandais Sean Kelly abandonne à cause d'une luxation de la clavicule.
La 13e étape voit le début de la haute montagne. Elle se déroule entre les villes de Bayonne et Pau dans le département des Pyrénées-Atlantiques. Martial Gayant craque et rend le maillot jaune à Charly Mottet qui a souffert comme Fignon dans le col du Soudet. L'étape est remportée par le Néerlandais Erik Breukink qui devance de 6 secondes le nouveau grand favori Jean-François Bernard et de 11 secondes le Colombien Pablo Wilches.
Quatre cols sont au programme de la 14e étape disputée entre Pau et Luz-Saint-Sauveur (Hautes-Pyrénées) : Marie-Blanque, l'Aubisque, les Bordères et la montée vers Luz-Ardiden. Dans le col de Marie-Blanque, Gilbert Duclos-Lassalle et Thierry Claveyrolat s'échappent. Dans la descente de Marie-Blanque, Duclos-Lassalle ne parvient pas à suivre Claveyrolat qui continue seul son effort avant de se faire rattraper et lâcher par le Norvégien Dag Otto Lauritzen. Dans la montée finale, Lauritzen est seul à 10 kilomètres de l'arrivée. Dans le groupe des favoris Herrera accélère violemment mais est suivi par Roche, Delgado, Hampsten, Wilches, Fuerte et Millar alors que Charly Mottet et Laurent Fignon sont lâchés. À 4 kilomètres du sommet, Herrera place une attaque que personne ne peut suivre. Il reprend 46 secondes à Hampsten, 52 secondes à Wilches et plus d'une minute à tous les autres favoris. Mais il échoue à 7 secondes de la victoire qui revient à Lauritzen. Mottet garde le maillot jaune avec 1 min 13 s d'avance sur Jean-François Bernard et 1 min 26 s sur Stephen Roche. Les autres favoris sont rejetés à plus de 4 minutes.
La 15e étape est remportée par l'Allemand Rolf Golz devant Le Clerc et Earley. Ils devancent un groupe de 30 coureurs, où se trouvent Charly Mottet, Jean-René Bernaudeau et plusieurs grimpeurs colombiens.
La 17e étape, marquée par de nombreux cols dans les Cévennes devait être propice aux baroudeurs, mais c'est finalement à un sprint massif que l'on assista avec les deux meilleurs sprinters du tour Guido Bontempi et Jean-Paul van Poppel. La lutte entre les deux fut si serrée qu'il fallut avoir recours à la photo finish pour les départager, van Poppel devançant son rival d'un boyau.
La 18e étape est un contre la montre individuel en montagne avec l’ascension du Mont-Ventoux.
Jean-François Bernard remporte cette étape et prend le maillot jaune en devançant Stephen Roche de 2 min 34 s au classement général.
Éblouissant la veille dans le mont Ventoux, Jean-François Bernard est la principale victime de la 19e étape Valréas (Vaucluse) et Villard-de-Lans (Isère). Mottet, Gayant et Fignon (tous trois de l'équipe Système U) déclenchent une attaque au ravitaillement de Léoncel alors que Bernard se trouve à l'arrière du peloton, retardé par une crevaison. Finalement, la manœuvre des Système U profite à Delgado, qui remporte l'étape, et à Roche, qui prend le maillot jaune. Bernard termine l'étape à plus de 4 minutes.
La 20e étape voit s'affronter les leaders dans l´ascension de l´Alpe d´Huez, pendant que les rescapés de l'échappée matinale se disputent la victoire, qui revient à Federico Echave. Le maillot à pois Luis Herrera attaque dès le pied de l’Alpe d’Huez, pris en chasse par Delgado et Roche, alors que Bernard et surtout Mottet sont distancés.
Vers le milieu de l’ascension, Delgado revient sur Herrera tandis que Bernard rattrape Roche ! A l´arrivee, le colombien devance l’espagnol de 25 secondes, mais Roche perd 1 min 44 s sur Delgado, qui revêt le maillot jaune pour 25 secondes
La 21e étape relie Bourg d´Oisans a La Plagne, par les cols du Galibier et de la Madeleine. Dans la vallée de la Maurienne, Roche attaque accompagné de 6 autres coureurs (Fuerte, Sanders, Munoz, Theunisse, Bernaudeau et Parra)
Bernard chasse un moment seul, vent défavorable, avant de se relever. Cette erreur tactique s'avérera décisive par la suite.
Au pied de la Madeleine, Roche possède 1 min 36 s d’avance sur Bernard et sur le groupe du maillot jaune Delgado.
Au sommet, il lui reste 48 secondes d’avance sur l’espagnol tandis que Bernard est pointé à 1 min 46 s. Le regroupement général a lieu dans le bas de la descente
Fignon en profite pour porter son attaque en compagnie d’Anselmo Fuerte. Le français n’est plus guère dangereux au classement général (8e à un quart d’heure). Son avance est de 2 min 41 s avant d’aborder la montée vers La Plagne, dernière difficulté de la journée. Ce sera suffisant pour que Fignon renoue ici avec le succès, 3 ans après une première victoire sur ces mêmes terres.
Pour le classement général, la lutte décisive s'engage au pied de La Plagne : Rapidement, Bernard capitule. Il concédera plus de 2 minutes sur le maillot jaune à l’arrivée. Il vient de tirer un trait sur ses dernières chances de remporter le Tour. À 15 km du sommet, Delgado se lance à l’assaut, pour creuser les écarts avant le dernier contre-la-montre. Il fait d’abord la différence mais, à 5 km de la ligne, il est en difficulté. Parra revient sur lui et l’entraîne dans son sillage. Dans le même temps, Roche produit un effort paroxystique dans les 3 ultimes kilomètres. Il parvient à combler 50 secondes de retard et s’écroule sur la ligne 4 secondes après le passage de l’espagnol. Il devra recevoir de l'oxygène et est également pénalisé de 10 secondes pour ravitaillement non autorisé. Il accuse désormais un retard de 39 secondes par rapport à Delgado
La 22e étape est la dernière étape de montagne, avec les cols du Cormet de Roselend, des Saisies, des Aravis, de la Colombière et de Joux-Plane puis plongée vers Morzine. Chozas s'échappe au sommet du col des Saisies et ne sera pas revu, gardant 1 minute à l'arrivée sur les leaders qui se neutralisent. Mais Roche attaque dans la descente de Joux Plane, et grapille 18 secondes sur Delgado
Les coureurs de l'équipe en tête de ce classement portent une casquette jaune (représentée dans les classements par l'icône à côté du nom de l'équipe)[10],[11].
(en) John Nauright et Charles Parrish, Sports Around the World: History, Culture, and Practice, vol. 2, Santa Barbara, CA, ABC-CLIO, (ISBN978-1-59884-300-2, lire en ligne)
Pierre Martin (Avec la contribution de : Penazzo, Sergio ; Baratino, Dante ; Schamps, Daniel ; Vos, Cor), Tour 87: The Stories of the 1987 Tour of Italy and Tour de France, Keighley, UK, Kennedy Brothers Publishing, (OCLC810684532)