The tense stage set up a fascinating battle between the two remaining breakaway riders, Geoffrey Bouchard (Ag2r-Citroën) and Koen Bouwman (Jumbo-Visma), and the group of general classification favourites on the unpaved final kilometre of Campo Felice.
But it was race favourite Bernal (Ineos Grenadiers) who fired a devastating attack inside the final kilometre, tearing past Bouchard and Bouwman, denying them the stage and taking his first victory of the season.
As race leader Attila Valter (Groupama-FDJ) was distanced on the final climb, Egan Bernal powered his way into the maglia rosa, now 15 seconds ahead of Remco Evenepoel (Deceuninck - Quick-Step) in second.
How it happened
Stage nine of the 2021 Giro d’Italia looked to be the first major test of the GC riders, after the breakaways and sprinters had taken all the spoils earlier in the week.
Starting in Castel di Sangro in the Abruzzo region of central Italy, there was not a moment of respite for the riders, with the climbing starting from the flag.
The peloton faced six long climbs over the course of the day on the 158km route to Campo Felice, including four categorised climbs, starting with the Passo Godi (13km at 4.1 per cent) which came 21km into the race.
After the long descent from the Godi, the race travelled over the uncategorised Fonte Ciarlotto and then onto the third category Forca Caruso (12.7km at 4.5 per cent) after 100km of racing.
Into the pivotal final 40km, the real fireworks were expected as the course then featured the Ovindoli climb (12.4km at five per cent), followed by the explosive finale on the Campo Felice (5.8km at 5.7 per cent), with a 1.6km gravel section averaging 8.6 per cent gradient to the line.
The opening 50km of the race were a relentless battle to form a breakaway, as a number of attacks were fired from the bunch, Bahrain Victorious leading the attacks.
Eventually a 22-rider break formed, including Damiano Caruso, Gino Mäder, and Matej Mohorič from Bahrain, along with Daniel Martínez from Ineos Grenadiers.
Disaster then struck on the descent from the Godi, as Mohorič lost control during a high-speed left-hand turn and went down hard, being sent over the handlebars and landing on his head.
Mohorič abandoned the race shortly after and was stretchered away to an ambulance, as his team-mates Caruso and Mäder continued to press on in the leading group.
Shortly after the descent the breakaway group were reeled back in and caught by the peloton, which triggered multiple attacks from the bunch with 100km to race.
Luis Leon Sanchez (Astana-Premier Tech) was the first to get a gap, which helped establish a new 17-rider breakaway including Bauke Mollema (Trek-Segafredo), George Bennett (Jumbo-Visma), Britain’s Simon Carr (EF Education-Nippo), Geoffrey Bouchard (Ag2r-Citroën) and Koen Bouwman (Jumbo-Visma).
Into the final 60km of the stage, the breakaway group was able to maintain an advantage of three minutes over the bunch, with Groupama-FDJ leading the peloton for race leader Attila Valter, with Ineos Grenadiers keeping a close eye just behind.
Onto the penultimate categorised climb of the day, Ovindoli, and the break began to collapse on the gradients as Ulissi attacked.
With 28km to the finish just seven riders remained out front, including Bouwman, Mollema and Bouchard, with the gap to the peloton down slightly to 2-30.
Back in the bunch, Ineos Grenadiers took over the pace-setting as the group was gradually reduced, but with all the favourites still in contact.
With 27km to the finish, Simon Carr launched his move and was followed by Bouchard, with the pair pulling out a 16 second advantage to the breakaway group, and extending the gap to the bunch back up to three minutes.
As the race hit the final climb to the line with around 5km left to race, Carr had dropped back to re-join the rest of the break while Bouchard pressed on alone, with a 25 second gap.
At 1-27 behind, the main group was still led by Ineos as maglia rosa Attila Valter was struggling to hold on at the back, with either Evenepoel or Bernal poised to take over the leader’s jersey if the Hungarian cracked.
Into the final 2km and the battle for the stage came down to a two-rider battle between Bouchard and Jumbo-Visma’s Koen Bouwman, who was desperately pursuing.
Bouchard hit the dirt roads with just five seconds to Bouwman, but the Dutchman was rapidly closing. With a kilometre to race Bouwman caught Bouchard.
But the GC group were surging behind, as Ineos pushed hard with Valter finally losing contact.
With just 800m left the gap was down to 15 seconds, with the escapees at serious risk of losing the stage.
Bouwman looked the stronger of the two, leading Bouchard into the final 500m
Behind, Bernal launched a huge attack with only Giulio Ciccone (Trek-Segafredo) able to follow.
Bernal’s power was absolutely remarkable as he ripped past Bouwman and Bouchard and into the lead on the stage.
The former Tour de France champion took the victory on the gravel finish, seven seconds ahead of Ciccone in second and Aleksandr Vlasov (Astana-Premier Tech) in third.
Evenepoel finished fourth on the stage, 10 seconds behind Bernal, as Bernal leaps from third place overall into first with a 15-second gap to Evenepoel.
Vlasov is now third overall with a 21-second deficit.
The race continues on Monday with a 139km stage into Foligno that could favour the sprinters.
Giro d'Italia 2021 stage nine, Castel di Sangro to Campo Felice (158km)
1. Egan Bernal (Col) Ineos Grenadiers, 4-08-23
2. Giulio Ciccone (Ita) Trek-Segafredo, at 7s
3. Aleksandr Vlasov (Rus) Astana-Premier Tech, at same time
4. Remco Evenepoel (Bel) Deceuninck - Quick-Step, at 10s
5. Dan Martin (Irl) Israel Start-Up Nation, at same time
6. Damiano Caruso (Ita) Bahrain Victorious, at 12s
7. Romain Bardet (Fra) Team DSM
8. Marc Soler (Esp) Movistar
9. Daniel Martínez (Col) Ineos Grenadiers
10. João Almeida (Por) Deceuninck - Quick-Step, all at same time
General classification after stage nine
1. Egan Bernal (Col) Ineos Grenadiers, in 35-19-22
2. Remco Evenepoel (Bel) Deceuninck - Quick-Step, at 15s
3. Aleksandr Vlasov (Rus) Astana-Premier Tech, at 21s
4. Giulio Ciccone (Ita) Trek-Segafredo, at 36s
5. Attila Valter (Hun) Groupama-FDJ, at 43s
6. Hugh Carthy (GBr) EF Education-Nippo, at 44s
7. Damiano Caruso (Ita) Bahrain Victorious, at 51s
8. Dan Martin (Irl) Israel Start-Up Nation
9. Simon Yates (GBr) Team BikeExchange, at 55s
10. Davide Formolo (Ita) UAE Team Emirates, at 1-01
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1