Get all your news in one place.
100’s of premium titles.
One app.
Start reading
Cycling News
Cycling News
Sport
Stephen Farrand

Tour de Suisse: João Almeida win stage 7 battle for GC seconds before decisive TT

João Almeida wins stage 7 at the Tour de Suisse 2025.

João Almeida (UAE Team Emirates-XRG) showed he is determined to fight for overall victory at the Tour de Suisse right to the very end of the race by going deep to win the mountain stage to Emmetten. However, his biggest rival, Kevin Vauquelin (Arkea-B&B Hotels), was also there and refused to surrender the leader's yellow jersey.

The French rider was the first to attack in the final kilometre. He could see the finish line ahead of him, but then Almeida came past him to win the stage and take the ten-second time bonus. Oscar Onley (Picnic-PostNL) also passed Vauquelin to take a six-second time bonus, with Vauquelin awarded four bonus seconds.

That left the Frenchman 33 seconds ahead of Almeida before Sunday's 10km uphill time trial. Almeida is a good time trialist, but so is Vauquelin, giving him an excellent chance of overall victory.

Julian Alaphilippe (Tudor Pro Cycling) suffered to finish fifth on the stage but is still third overall at 41 seconds.

Almeida wanted to win for the bonus seconds and to pay back his teammates.

"It was a hard day, fast all day. My teammates did a perfect job; they were super strong and pulled all day to catch the breakaway. This victory is for them. Every second is important, and we had to do our best," he said.

Almeida lost three minutes on stage 1 but has fought back every day. He will leave his all in the time trial in the hope of beating Vauquelin.

"I don't think I'm the favourite for overall victory, Kevin Vauquelin is also strong in the TT, so it's going to be tough. But I'm going to give everything I have," he said.

Kevin Vauquelin maintains overall race lead (Image credit: Getty Images)

How it unfolded

The peloton racing on stage 7 at the Tour de Suisse 2025 (Image credit: Getty Images)

The longest stage in this year's Tour de Suisse was always going to be crucial in the general classification battle, with Sunday's 10km uphill time trial to Stockhütte set to crown the final winner.

The European heatwave also hit central Switzerland, but that did not stop the early attacks. Sadly, before the break formed, the USA's Matthew Riccitello (Israel-Premier Tech) crashed hard, and he was later forced to abandon the Tour de Suisse. He was one of many to abandon during stage 7, with some riders seriously fatigued after also riding the Giro d'Italia or injured after a series of crashes.

Different-sized groups made different attempts to get away, but the peloton was never happy and so never let them go. The GC teams were especially vigilant, with UAE Team Emirates-XRG doing a lot of the chasing.

The elastic only snapped after a fast 60km of racing. Suddenly Quinn Simmons (Lidl-Trek), Aleksandr Vlasov (Red Bull-Bora-Hansgrohe), William Junior Lecerf (Soudal-QuickStep), Felix Engelhardt (Jayco-AlUla), Frank van den Broek (Picnic-PostNL), Hugo Houle (Israel-Premier Tech) and Tiesj Benoot (Visma-Lease a Bike) got away and got a gap.

With 110km to go, the gap was up to 3:30, but the peloton never let them go on the rolling terrain. Arkea-B&B Hotels and Tudor joined UAE Team Emirates-XRG at the front of the peloton, working for Vauquelin, Alaphilippe and Almeida, respectively.

Tiesj Benoot leads the breakaway (Image credit: Getty Images)

Vlasov was first to the summit of the Schwändi climb as the peloton began to eat into their lead. Simmons won the first Tissot sprint, and Benoot won the second sprint, but the gap began to fall ominously. The views across Lake Zugersee were spectacular, but the racing was intense as the peloton reduced the gap to 2:00 with 70km to race.

With 40km to go, the gap was down to 1:15 as the two late climbs loomed on the horizon. The Bürgenstock began with 23km to go and climbed for 5.5km at an average of 7.8%.

The gap to the peloton was only 55 seconds, and so Simmons took off alone in search for a second breakaway victory. Behind, the peloton also blew apart after a Tudor acceleration, but Alaphilippe opted not to attack. However, the GC battle was suddenly on.

Felix Gall (Decathlon-AG2R La Mondiale) was keen to move up in the GC and surged up the climb. He was joined by João Almeida (UAE Team Emirates-XRG), Oscar Onley (Picnic-PostNL) and Kevin Vauquelin (Arkea-B&B Hotels) and a suffering Alaphilippe.

Quinn Simmons at the Tour de Suisse (Image credit: Getty Images)

Simmons had a chance of success but was suddenly called back to the chase group to work for GC leader Lennard Kämna, who started the stage fifth overall.

Ahead of them, a sextet formed on the descent, with Van den Broek there to work for Onley, while Gall, Vauquelin, Almeida, and Alaphilippe took advantage of Picnic's excellent team tactics. The Kämna group kept the gap to 20 seconds thanks to a huge job by Simmons, who tried to match Van den Broek's work up front. There was so much to race for in the final 15km of the stage.

Oscar Onley leads the selection at the Tour de Suisse (Image credit: Getty Images)

The final Emmetten climb to the finish line was short at 3.9km but also steep at 8.1% with an early part at 12.7%. Simmons emptied himself in pursuit of the attacks, and so the Kämna group started the climb with a gap of 25 seconds.

Gall was the first to attack on the climb with three kilometres to go, spinning away from his GC rivals. The other attackers forced Almeida to lead the chase with only Onley giving him a few turns on the front. They knew Gall was not a direct GC threat. Behind Ben O'Connor (Jayco-AlUla) tried to chase, to limit his losses and stay in the top six overall.

Almeida dragged the attackers up to Gall with a kilometre to go, and so the race for the stage victory and the bonus seconds began. Vauquelin attacked with ambition but was caught and passed by Almeida before the line.

Vauquelin can only hope for a different result and so overall victory after Sunday's 10km uphill time trial.

(Image credit: Getty Images)

Results

Stage 7

Position

Rider (Team)

Time Gap

1

João Almeida (UAE Team Emirates XRG)

4:38:25

2

Oscar Onley (Team Picnic PostNL)

,,

3

Kévin Vauquelin (Arkéa–B&B Hotels)

,,

4

Felix Gall (Decathlon AG2R La Mondiale Team)

0:04

5

Julian Alaphilippe (Tudor Pro Cycling Team)

0:08

6

Felix Großschartner (UAE Team Emirates XRG)

1:07

7

Joseph Blackmore (Israel–Premier Tech)

1:09

8

Ilan Van Wilder (Soudal Quick‑Step)

,,

9

Clément Champoussin (XDS Astana Team)

,,

10

Lennard Kämna (Lidl – Trek)

1:11

11

Ewen Costiou (Arkéa–B&B Hotels)

,,

12

Georg Zimmermann (Intermarché–Wanty)

,,

13

Ben O'Connor (Team Jayco AlUla)

1:14

14

Finlay Pickering (Bahrain Victorious)

1:22

15

Emiel Verstrynge (Alpecin–Deceuninck)

1:41

16

Will Barta (Movistar Team)

1:43

17

Pablo Castrillo (Movistar Team)

,,

18

Hugo Houle (Israel–Premier Tech)

2:06

19

Bart Lemmen (Team Visma | Lease a Bike)

3:41

20

Marcel Camprubí (Q36.5 Pro Cycling Team)

3:48

21

Sam Maisonobe (Cofidis)

3:49

22

George Bennett (Israel–Premier Tech)

,,

23

Bob Jungels (INEOS Grenadiers)

3:52

24

Eduardo Sepúlveda (Lotto)

,,

25

Warren Barguil (Team Picnic PostNL)

,,

26

Gianluca Brambilla (Q36.5 Pro Cycling Team)

4:47

27

Tijmen Graat (Team Visma | Lease a Bike)

6:04

28

Quinn Simmons (Lidl – Trek)

6:25

29

Marc Hirschi (Tudor Pro Cycling Team)

7:16

30

Nicola Conci (XDS Astana Team)

7:21

31

Frank Van Den Broek (Team Picnic PostNL)

7:39

32

Anthon Charmig (XDS Astana Team)

7:57

33

Jan Maas (Cofidis)

,,

34

Fausto Masnada (XDS Astana Team)

8:20

35

Romain Grégoire (Groupama–FDJ)

9:07

36

Junior Lecerf (Soudal Quick‑Step)

,,

37

Mathijs Paasschens (Bahrain Victorious)

9:40

38

Simone Petilli (Intermarché–Wanty)

10:02

39

Pieter Serry (Soudal Quick‑Step)

,,

40

Callum Scotson (Decathlon AG2R La Mondiale Team)

11:07

41

Tiesj Benoot (Team Visma | Lease a Bike)

12:39

42

Ben Swift (INEOS Grenadiers)

12:57

43

Lucas Hamilton (INEOS Grenadiers)

,,

44

Gal Glivar (Alpecin–Deceuninck)

,,

45

Sam Oomen (Lidl – Trek)

,,

46

Nairo Quintana (Movistar Team)

,,

47

Lorenzo Fortunato (XDS Astana Team)

,,

48

Tao Geoghegan Hart (Lidl – Trek)

,,

49

Andrew August (INEOS Grenadiers)

,,

50

Nelson Oliveira (Movistar Team)

,,

51

António Morgado (UAE Team Emirates XRG)

,,

52

Javier Romo (Movistar Team)

,,

53

Ion Izagirre (Cofidis)

,,

54

Victor Langellotti (INEOS Grenadiers)

,,

55

Matteo Sobrero (Red Bull–BORA–hansgrohe)

,,

56

Juan Pedro López (Lidl – Trek)

,,

57

Stefano Oldani (Cofidis)

13:20

58

Stefan Küng (Groupama–FDJ)

,,

59

Julien Vermote (Team Visma | Lease a Bike)

,,

60

Otto Vergaerde (Lidl – Trek)

,,

61

Mauri Vansevenant (Soudal Quick‑Step)

,,

62

Jonas Rutsch (Intermarché–Wanty)

,,

63

Neilson Powless (EF Education–EasyPost)

,,

64

Valentin Madouas (Groupama–FDJ)

,,

65

Chris Froome (Israel–Premier Tech)

,,

66

Matej Mohorič (Bahrain Victorious)

,,

67

Jonas Koch (Red Bull–BORA–hansgrohe)

,,

68

Aleksandr Vlasov (Red Bull–BORA–hansgrohe)

14:11

69

Felix Engelhardt (Team Jayco AlUla)

14:22

70

Mauro Schmid (Team Jayco AlUla)

,,

71

Ramses Debruyne (Alpecin–Deceuninck)

15:20

72

David González (Q36.5 Pro Cycling Team)

16:33

73

Julius Johansen (UAE Team Emirates XRG)

19:38

74

Harry Sweeny (EF Education–EasyPost)

,,

75

Samuele Battistella (EF Education–EasyPost)

,,

76

Nans Peters (Decathlon AG2R La Mondiale Team)

,,

77

Paul Lapeira (Decathlon AG2R La Mondiale Team)

,,

78

Martin Tjøtta (Arkéa–B&B Hotels)

,,

79

Vegard Stake Laengen (UAE Team Emirates XRG)

,,

80

Silvan Dillier (Alpecin–Deceuninck)

,,

81

Mathis Le Berre (Arkéa–B&B Hotels)

,,

82

Patrick Gamper (Team Jayco AlUla)

,,

83

Fabio Christen (Q36.5 Pro Cycling Team)

,,

84

Léo Bisiaux (Decathlon AG2R La Mondiale Team)

,,

85

Sean Flynn (Team Picnic PostNL)

,,

86

Lewis Askey (Groupama–FDJ)

,,

87

Rui Costa (EF Education–EasyPost)

,,

88

Danny Van Poppel (Red Bull–BORA–hansgrohe)

,,

89

Ayco Bastiaens (Soudal Quick‑Step)

,,

90

Jonas Gregaard (Lotto)

,,

91

Sylvain Moniquet (Cofidis)

,,

92

Larry Warbasse (Tudor Pro Cycling Team)

,,

93

Luke Durbridge (Team Jayco AlUla)

,,

94

Marius Mayrhofer (Tudor Pro Cycling Team)

,,

95

Eddy Le Huitouze (Groupama–FDJ)

,,

96

Arjen Livyns (Lotto)

,,

97

Rainer Kepplinger (Bahrain Victorious)

,,

98

Sergio Samitier (Cofidis)

,,

99

Gerben Kuypers (Intermarché–Wanty)

,,

100

Vincenzo Albanese (EF Education–EasyPost)

,,

101

Pello Bilbao (Bahrain Victorious)

,,

102

Nicolò Buratti (Bahrain Victorious)

,,

103

Jimmy Janssens (Alpecin–Deceuninck)

,,

104

Marco Haller (Tudor Pro Cycling Team)

,,

105

Brent Van Moer (Lotto)

20:32

106

Max Walker (EF Education–EasyPost)

20:34

107

Alberto Bettiol (XDS Astana Team)

,,

108

Davide Ballerini (XDS Astana Team)

,,

109

Fabio Van Den Bossche (Alpecin–Deceuninck)

,,

110

Arnaud De Lie (Lotto)

,,

111

Mikkel Bjerg (UAE Team Emirates XRG)

20:48

112

Stefan Bissegger (Decathlon AG2R La Mondiale Team)

,,

113

Matteo Badilatti (Q36.5 Pro Cycling Team)

27:19

114

Thomas Gloag (Team Visma | Lease a Bike)

27:21

115

Alexander Kamp (Intermarché–Wanty)

,,

116

Henri Uhlig (Alpecin–Deceuninck)

27:25

117

Madis Mihkels (EF Education–EasyPost)

27:27

118

Jasper De Buyst (Lotto)

27:44

119

Sébastien Grignard (Lotto)

,,

120

Antoine Huby (Soudal Quick‑Step)

30:42

121

Alex Edmondson (Team Picnic PostNL)

31:07

122

Luc Wirtgen (Tudor Pro Cycling Team)

,,

123

Olivier Le Gac (Groupama–FDJ)

31:29

124

Pavel Bittner (Team Picnic PostNL)

32:12

125

Tim Naberman (Team Picnic PostNL)

,,

General classification after stage 7

Position

Rider (Team)

Time Gap

1

Kévin Vauquelin (Arkéa–B&B Hotels)

29:00:55

2

João Almeida (UAE Team Emirates XRG)

0:33

3

Julian Alaphilippe (Tudor Pro Cycling Team)

0:41

4

Oscar Onley (Team Picnic PostNL)

1:19

5

Felix Gall (Decathlon AG2R La Mondiale Team)

2:28

6

Lennard Kämna (Lidl – Trek)

2:59

7

Ben O'Connor (Team Jayco AlUla)

3:34

8

Pablo Castrillo (Movistar Team)

4:27

9

Ilan Van Wilder (Soudal Quick‑Step)

4:30

10

Clément Champoussin (XDS Astana Team)

6:07

11

Felix Großschartner (UAE Team Emirates XRG)

6:35

12

Will Barta (Movistar Team)

7:47

13

George Bennett (Israel–Premier Tech)

10:06

14

Georg Zimmermann (Intermarché–Wanty)

10:43

15

Finlay Pickering (Bahrain Victorious)

11:17

16

Warren Barguil (Team Picnic PostNL)

13:33

17

Romain Grégoire (Groupama–FDJ)

14:42

18

Eduardo Sepúlveda (Lotto)

15:19

19

Bart Lemmen (Team Visma | Lease a Bike)

17:41

20

Joseph Blackmore (Israel–Premier Tech)

17:54

21

Nicola Conci (XDS Astana Team)

24:21

22

Ewen Costiou (Arkéa–B&B Hotels)

26:34

23

Aleksandr Vlasov (Red Bull–BORA–hansgrohe)

26:43

24

Tao Geoghegan Hart (Lidl – Trek)

29:53

25

Tijmen Graat (Team Visma | Lease a Bike)

32:12

26

Valentin Madouas (Groupama–FDJ)

33:21

27

Sam Maisonobe (Cofidis)

36:31

28

Callum Scotson (Decathlon AG2R La Mondiale Team)

38:40

29

Matteo Sobrero (Red Bull–BORA–hansgrohe)

39:10

30

Quinn Simmons (Lidl – Trek)

40:45

31

Marcel Camprubí (Q36.5 Pro Cycling Team)

41:17

32

Hugo Houle (Israel–Premier Tech)

43:37

33

Emiel Verstrynge (Alpecin–Deceuninck)

44:00

34

Ramses Debruyne (Alpecin–Deceuninck)

44:36

35

Juan Pedro López (Lidl – Trek)

45:15

36

Léo Bisiaux (Decathlon AG2R La Mondiale Team)

46:07

37

Bob Jungels (INEOS Grenadiers)

46:40

38

Neilson Powless (EF Education–EasyPost)

46:55

39

Javier Romo (Movistar Team)

46:58

40

Tiesj Benoot (Team Visma | Lease a Bike)

47:29

41

Frank Van Den Broek (Team Picnic PostNL)

51:12

42

Mauro Schmid (Team Jayco AlUla)

51:40

43

Mauri Vansevenant (Soudal Quick‑Step)

51:52

44

Ben Swift (INEOS Grenadiers)

51:59

45

Victor Langellotti (INEOS Grenadiers)

52:10

46

Marc Hirschi (Tudor Pro Cycling Team)

52:49

47

Gianluca Brambilla (Q36.5 Pro Cycling Team)

53:45

48

Rainer Kepplinger (Bahrain Victorious)

55:20

49

Nairo Quintana (Movistar Team)

55:58

50

Lorenzo Fortunato (XDS Astana Team)

56:52

51

Sam Oomen (Lidl – Trek)

57:22

52

Andrew August (INEOS Grenadiers)

57:34

53

Ion Izagirre (Cofidis)

58:34

54

Junior Lecerf (Soudal Quick‑Step)

59:19

55

Anthon Charmig (XDS Astana Team)

59:25

56

Sergio Samitier (Cofidis)

1:00:04

57

Otto Vergaerde (Lidl – Trek)

1:00:47

58

Stefan Küng (Groupama–FDJ)

1:02:04

59

Matteo Badilatti (Q36.5 Pro Cycling Team)

1:02:58

60

Pello Bilbao (Bahrain Victorious)

1:03:04

61

Matej Mohorič (Bahrain Victorious)

1:03:32

62

Stefano Oldani (Cofidis)

1:03:39

63

Simone Petilli (Intermarché–Wanty)

1:04:30

64

Pieter Serry (Soudal Quick‑Step)

1:06:06

65

Felix Engelhardt (Team Jayco AlUla)

1:06:57

66

António Morgado (UAE Team Emirates XRG)

1:08:24

67

Fabio Christen (Q36.5 Pro Cycling Team)

1:11:04

68

Jonas Rutsch (Intermarché–Wanty)

1:12:29

69

Mathijs Paasschens (Bahrain Victorious)

1:12:53

70

Fausto Masnada (XDS Astana Team)

1:13:54

71

Larry Warbasse (Tudor Pro Cycling Team)

1:14:13

72

Jan Maas (Cofidis)

1:14:25

73

Arjen Livyns (Lotto)

1:14:29

74

Gal Glivar (Alpecin–Deceuninck)

1:16:06

75

Lucas Hamilton (INEOS Grenadiers)

1:16:21

76

Paul Lapeira (Decathlon AG2R La Mondiale Team)

1:16:45

77

Nans Peters (Decathlon AG2R La Mondiale Team)

1:17:59

78

Thomas Gloag (Team Visma | Lease a Bike)

1:18:53

79

Nelson Oliveira (Movistar Team)

1:18:59

80

Rui Costa (EF Education–EasyPost)

1:20:12

81

Harry Sweeny (EF Education–EasyPost)

1:20:48

82

Mathis Le Berre (Arkéa–B&B Hotels)

1:20:49

83

Patrick Gamper (Team Jayco AlUla)

1:21:53

84

Fabio Van Den Bossche (Alpecin–Deceuninck)

1:22:17

85

Nicolò Buratti (Bahrain Victorious)

1:23:57

86

Gerben Kuypers (Intermarché–Wanty)

1:25:37

87

Sean Flynn (Team Picnic PostNL)

1:27:01

88

Brent Van Moer (Lotto)

1:27:56

89

Luke Durbridge (Team Jayco AlUla)

1:28:16

90

Vegard Stake Laengen (UAE Team Emirates XRG)

1:28:47

91

Martin Tjøtta (Arkéa–B&B Hotels)

1:29:12

92

Lewis Askey (Groupama–FDJ)

1:29:20

93

Julien Vermote (Team Visma | Lease a Bike)

1:29:44

94

Marius Mayrhofer (Tudor Pro Cycling Team)

1:29:55

95

Danny Van Poppel (Red Bull–BORA–hansgrohe)

,,

96

Mikkel Bjerg (UAE Team Emirates XRG)

1:30:19

97

Samuele Battistella (EF Education–EasyPost)

1:30:45

98

David González (Q36.5 Pro Cycling Team)

1:32:27

99

Chris Froome (Israel–Premier Tech)

1:33:47

100

Antoine Huby (Soudal Quick‑Step)

1:35:40

101

Sylvain Moniquet (Cofidis)

1:35:51

102

Jonas Koch (Red Bull–BORA–hansgrohe)

1:36:13

103

Alberto Bettiol (XDS Astana Team)

1:36:16

104

Luc Wirtgen (Tudor Pro Cycling Team)

1:37:08

105

Julius Johansen (UAE Team Emirates XRG)

1:37:40

106

Marco Haller (Tudor Pro Cycling Team)

1:38:43

107

Madis Mihkels (EF Education–EasyPost)

1:39:06

108

Vincenzo Albanese (EF Education–EasyPost)

1:39:42

109

Stefan Bissegger (Decathlon AG2R La Mondiale Team)

1:40:12

110

Ayco Bastiaens (Soudal Quick‑Step)

1:40:49

111

Jonas Gregaard (Lotto)

1:42:31

112

Eddy Le Huitouze (Groupama–FDJ)

1:43:26

113

Pavel Bittner (Team Picnic PostNL)

1:43:51

114

Alexander Kamp (Intermarché–Wanty)

1:44:20

115

Silvan Dillier (Alpecin–Deceuninck)

1:45:24

116

Davide Ballerini (XDS Astana Team)

1:46:51

117

Arnaud De Lie (Lotto)

1:49:02

118

Max Walker (EF Education–EasyPost)

1:50:02

119

Tim Naberman (Team Picnic PostNL)

1:51:25

120

Jimmy Janssens (Alpecin–Deceuninck)

1:54:16

121

Henri Uhlig (Alpecin–Deceuninck)

1:54:20

122

Jasper De Buyst (Lotto)

1:56:12

123

Sébastien Grignard (Lotto)

1:57:38

124

Alex Edmondson (Team Picnic PostNL)

2:02:46

125

Olivier Le Gac (Groupama–FDJ)

2:12:24

Sign up to read this article
Read news from 100’s of titles, curated specifically for you.
Already a member? Sign in here
Related Stories
Top stories on inkl right now
One subscription that gives you access to news from hundreds of sites
Already a member? Sign in here
Our Picks
Fourteen days free
Download the app
One app. One membership.
100+ trusted global sources.