176 atletas, distribuídos por 22 equipas marcaram presença no arranque da edição 109 do Tour de France. Entre os presentes três ex-vencedores – Tadej Pogačar (UAE Team Emirates, vencedor das edições de 2021 e 2020), Geraint Thomas (Ineos Grenadiers – vencedor da edição de 2018) e Chris Froome (Israel Premier Tech – vencedor das edições de 2017, 2016, 2015 e 2013) – e ainda dois portugueses – Ruben Guerreiro (EF) e Nelson Oliveira (Movistar Team).

A prova arrancou com um contra-relógio individual na Dinamarca, mais concretamente em Copenhaga, debaixo de chuva. Os favoritos foram os primeiros a partir, com destaque para Tadej Pogačar que foi o melhor entre os favoritos. O melhor tempo foi selado já na recta final do dia, com Yves Lampaert (Quick – Step) a beneficiar do amenizar das condições climatéricas para bater toda a concorrência e tornar-se no primeiro líder da edição. Ao segundo dia esperava-se que o vento agita-se as águas do pelotão mas este não apareceu. Magnus Cort (EF), um dos homens-prodígio da casa, foi um dos fugitivos do dia e subiu ao pódio, como o primeiro líder da classificação da montanha. Após um par de quedas sem cortes de tempo entre os demais favoritos, Fabio Jakobsen (Quick – Step) foi o mais forte dos sprinters, com Wout van Aert (Jumbo – Visma) a terminar o dia em 2º lugar e a subir à liderança da prova. O último na Dinamarca viu o belga terminar novamente no 2º lugar, numa vitória que sorriu a Dylan Groenewegen (BikeExchange), enquanto Magnus Cort foi o fugitivo do dia, para alegria dos dinamarqueses.

Após o primeiro dia de descanso, o líder da prova surpreendeu tudo e todos. Numa etapa que era, a priori, para ser disputada ao sprint, Wout van Aert atacou num pequeno topo a cerca de 10 quilómetros do fim, não mais sendo alcançado. A 5ª etapa foi marcada pelo pavé e pela primeira fuga a vigar. Simon Clarke bateu Taco van der Hoorn (ntermarché – Wanty – Gobert) sobre a linha de meta e deu a primeira vitória à Israel – Premier Tech no Tour de France. Entre os favoritos, Jack Haig (Bahrain Victorious) abandonou e Primož Roglič (Jumbo – Visma) caiu e perdeu tempo precioso para os demais favoritos. No dia seguinte, o líder da prova foi para a frente mas, não só a fuga não vingou, como a equipa da Jumbo – Visma ficou toda desfeita, permitindo a Tadej Pogačar vencer a jornada e assumir a liderança da prova. O mesmo cenário repetiu-se no dia seguinte.

A 8ª jornada marcou o regresso às vitórias da Jumbo – Visma, neste caso com Wout van Aert a bater Michael Matthews (BikeExchange) e Pogačar num sprint em ligeira subida. O último dia antes do segundo dia de descanso culminou com a segunda fuga vitoriosa, num regresso aos grandes triunfos de Bob Jungels (AG2R) que já não vencia numa Grande Volta desde a 15ª etapa do 100º Giro d’Italia, em 2017. O dia ficou ainda marcado pela desistência de Ruben Guerreiro após sintomas e ter testado positivo para o vírus covid-19.
A segunda semana de prova começou num ritmo frenético, dando depois lugar a uma fuga vitoriosa, não sem antes a etapa ser parada devido a uma manifestação climática. No final do dia, Magnus Cort bateu milimetricamente Nick Schultz (BikeExchange).

No dia seguinte, os ciclistas enfrentaram nova chegada em alto, com passagem pelo mítico Col du Télégraphe. A Jumbo – Visma ousou lançar-se ao ataque desde cedo e, no final da etapa, conseguiu mesmo fazer Pogačar vacilar, vencendo Vingegaard a jornada e assumindo a liderança da prova. O Dia da Tomada da Bastilha foi marcado pela ascensão ao Alpe d’Huez e pelo espectáculo proporcionado por Chris Froome. O vencedor de quatro Tours de France esteve na fuga do dia e na luta por uma vitória que ficou entregue ao compatriota Thomas Pidcock (Ineos Grenadiers). A 13ª etapa foi marcada por nova fuga a vingar, com a vitória a sorrir a Mads Pedersen (Trek – Segafredo). O dia seguinte viu novamente os fugitivos a disputarem a jornada, com Michael Matthews (BikeExchange) a obter a mais bela das vitórias da sua carreira. A segunda semana terminou ao sprint, com Jasper Philipsen (Alpecin – Fenix) a bater toda a concorrência.

A terceira semana começou com nova fuga a vingar, com Hugo Houle (Israel – Premier Tech) a conquistar a 2ª vitória de sempre no Tour para o Canadá. Aleksandr Vlasov (Bora – Hansgrohe) foi um dos fugitivos do dia e reentrou no top-10, enquanto Romain Bardet (Team DSM) teve um dia para esquecer. No dia seguinte, o francês esteve ao ataque, mas a vitória acabou por ser mesmo disputada entre Tadej Pogačar e Jonas Vingegaard, com o esloveno a levar a melhor sobre o dinamarquês. No dia seguinte a situação inverteu-se, com Vingegaard a selar, definitivamente, a sua vitória no Tour de France. O dia ficou ainda marcado pelo pela queda de Jonas Vingegaard na descida do Col des Spandelles. Pogačar esperou. Mas, pouco depois, foi o esloveno a ter um percalço, indo mesmo ao chão. Vingegaard esperou e recebeu o pronto agradecimento, num gesto que eternizou a 18ª etapa desta 109ª edição nos livros de ouro do ciclismo.

Com a montanha deixada para trás, Christophe Laporte (Jumbo – Visma) deu a primeira vitória à França na 19ª etapa. Wout van Aert festejou o Prémio de Super Combativo sendo o mais forte no último contra-relógio individual, fazendo a sua equipa chegar a Paris como a primeira equipa desde a Faema em 1969 a conquistar a camisola amarela, verde e das bolinhas. Jasper Philipsen (Alpecin – Deceuninck) venceu a mítica etapa dos Champs-Élysées naquela que foi a edição mais rápida do Tour: 42.02 km/h.
Pogačar conquistou pela terceira vez consecutiva a camisola branca referente à juventude, enquanto a Ineos Grenadiers venceu colectivamente. Nelson Oliveira terminou a prova na 52ª posição, numa edição marcada ainda pelo facto de Andrey Zeits (Astana) ter-se tornado no 4º ciclista de sempre a terminar, pelo menos, 20 Grandes Voltas sem nenhum abandono no currículo.

Entre os comentadores do Eurosport, José Azevedo ergueu os braços pela primeira vez no Jogo das Apostas:
No que toca aos Envelopes, Olivier Bonamici arrasou os seus colegas: