The diminutive Australian sprinter was the first to open his sprint with 200m remaining at the end of uneventful stage, and was able to hold off the charges of Bennett and Gaviria on the run to the line.
>> Struggling to get to the shops try 6 issues of Cycling Weekly magazine for just £6 delivered to your door <<
It was a narrow, technical, and slightly uphill final few hundred metres, but Ewan seemed to have timed his sprint to perfection as he came off the wheel of team-mate Luka Mezgec with 200m to go.
Gaviria and Bennett were locked in behind until the final corner with 75m remaining, before jumping out of the slipstream and coming alongside the Orica-Scott man.
The Colombian was coming the fastest, but he had left it too late, and despite lunging for the line, he was only able to pip Bennett to second, leaving Ewan to celebrate the win.
How it happened
The seventh stage of the 100th edition of the Giro d’Italia saw three riders go clear from the gun: Giuseppe Fonzi (Wilier Triestina), Dmitrii Kozonchok (Gazprom-Rusvelo), and Simone Ponzi (CCC Sprandi Polkowice).
They quickly built an advantage of around four minutes before Ponzi punctured after 40km, forcing him to return to the main pack and leaving only two riders left out in front.
The gap remained locked at between three and four minutes for much of the long slog to Alberobello, with little excitement on offer at sole classified climbs or the intermediate sprints, where Fernando Gaviria made sure he swept up the remaining points at the front of the bunch.
With Fonzi and Kozonchok tiring out front, it didn’t take much effort for the peloton to bring them back, bringing the gap down below a minute for the first time with 26km to go after a far-from action-packed five hours in the saddle.
The catch was eventually made with 19km remaining, which prompted the first formation of the sprint trains as Quick-Step Floors, Lotto-Soudal, and Orica-Scott moved to the front, while Movistar and Bahrain-Merida were also to the fore as they kept their GC hopefuls out of trouble.
The final 4.5km consisted of a technical loop around the picturesque town of Alberobello, meaning plenty of fighting for position from around seven kilometres out.
Lotto-Soudal won the race into the circuit, but their effort was disrupted by an attack from Kristijan Koren (Cannondale-Drapac) with four kilometres remaining.
With two kilometres to go it was up to Orica-Scott and Bora-Hansgrohe to move to the front as the peloton was strung out in single file.
And it was those two teams who would stay on the front through the technical final kilometre with first Bora’s Pöstlberger and then Orica’s Mezgec keeping the speed high for the final sprint.
In the end, with a technical final 300m, position was everything, and with Ewan perfectly positioned near the front he was able to make sure that he led into the final corner, just being able to hold off Gaviria to take his first Giro d’Italia stage win.
Giro d’Italia stage seven: Castrovillari to Alberobello (224km)
1. Caleb Ewan (Aus) Orica-Scott, in 5-35-18
2. Fernando Gaviria (Col) Quick-Step Floors
3. Sam Bennett (Irl) Bora-Hansgrohe
4. André Greipel (Ger) Lotto Soudal
5. Jasper Stuyven (Bel) Trek-Segafredo
6. Ryan Gibbons (RSA) Dimension Data, all at same time
7. Enrico Battaglin (Ita) Team LottoNl-Jumbo, at 2 secs
8. Rüdiger Selig (Ger) Bora-Hansgrohe
9. Alexey Tsatevich (Rus) Gazprom-Rusvelo
10. Vincenzo Nibali (Ita) Bahrain-Merida, all at same time
General classification after stage seven
1. Bob Jungels (Lux) Quick-Step Floors, in 33-56-07
2. Geraint Thomas (GBr) Team Sky, at 6 secs
3. Adam Yates (GBr) Orica-Scott, at 10 secs
4.Vincenzo Nibali (Ita) Bahrain-Merida
5. Domenico Pozzovivo (Ita) AG2R La Mondiale
6. Tom Dumoulin (Ned) Team Sunweb
7. Nairo Quintana (Col) Movistar Team
8. Bauke Mollema (Ned) Trek-Segafredo
9. Andrey Amador (CRc) Movistar Team
10. Tejay Van Garderen (USA) BMC Racing Team, all at same time