After the intense mountain action of the previous stage, Stage 17 was an opportunity for the sprinters.
Lampre-Merida led the small peloton into the finishing straight in Lugano, with Modolo holding off challenges from Giacomo Nizzolo (Trek Factory) and Luca Mezgec (Giant-Alpecin). Australian champion Heinrich Haussler (IAM Cycling) was fourth.
There was no change to the general classification with Alberto Contador retaining a 4min 2sec lead over Mikel Landa (Astana).
"In theory it was a transitional stage but it was hard. The road went up and down, and we were riding into a headwind for most of the day. The peloton was very nervous, and it was fast, with the three-man breakaway up the road. So far, something has happened almost every day: a crash, a puncture. I'm very happy because I got through the stage safely and arrived in Lugano, where I live, on my home roads. Yesterday was much more wearing than I would have liked, but I'm one day closer to Milan." - Alberto Contador
With a short stage on the cards, attacks began right from the start with Marco Bandiera (Androni Giocattoli), Iljo Keisse (Etixx-QuickStep) and Giacomo Berlato (Nippo-Vini Fantini) holding a 30 second lead just two kilometres into the race.
The trio had a two minute advantage on the peloton on the descent of Teglio, the only categorised climb of the stage, with two chasers Davide Villella (Cannondale-Garmin) and Maciej Paterksi (CCC) in the middle.
After 30km the three leaders had three minutes in hand, but the peloton did not give them any more rope.
Back in the peloton it was Sky’s Elia Viviani who collected the remaining points in the first intermediate sprint to extend his lead in the sprint competition. But the Italian's effort came to nought when rival Nizzolo took the points in the second intermediate sprint, which in addition to his second place finish on the stage, gave him enough points to take the lead in the sprint classification
The leaders conceded defeat with 27km to go, just after the second intermediate sprint of the stage.
Adam Hansen gave Australia something to cheer for when he launched an attack with 26km to go on the small climb, with Patrick Gretsch (AG2R La Mondiale) and Darwin Atapuma (BMC) attempting to chase him. Neither could make contact with the Lotto-Soudal rider, with his 25 second lead too small an advantage for a long ride with 20km still to go. The effort of the Giant-Alpecin led peloton caught him with 10km to go.
Tinkoff-Saxo massed itself on the front of the peloton to protect the Maglia Rosa as the race crossed the border into Switzerland and tackled the final small climb before the finish.
Cannondale-Garmin's Tom Jelte-Slagter attacked on the final climb, with Philippe Gilbert (BMC) chasing but they could not snap the elastic. Katusha’s Luca Paolini applied pressure on the descent and managed to separate himself from the peloton with two kilometres to go.
The Italian was caught just before the red kite with Lampre-Merida leading the peloton into the finishing straight.
"On paper, the stage looked easy, but in reality it was hard, with a real ramp at 4km to go. I looked around me on the ramp and I saw lots of potential sprinters in difficulty. Perhaps they were more tired than me. Yesterday was very hard but I had good legs today and it was nice and hot - the sort of day I like. Perhaps we could do with one more rider but, after months of hard work, in Max Richeze and Roberto Ferrari I have one of the best lead-out trains going. I'm afraid of no one." - Sacha Modolo
Stage 17: 134km, Tirano - Lugano
1 Sacha Modolo (ITA) Lampre-Merida 3hr 07min 51sec
2 Giacomo Nizzolo (ITA) Trek Factory
3 Luka Mezgec (SLO) Team Giant-Alpecin
4 Heinrich Haussler (AUS) IAM Cycling
5 Davide Appollonio (ITA) Androni Giocattoli
6 Stig Broeckx (BEL) Lotto Soudal
7 Juan Jose Lobato (ESP) Movistar
8 Alexander Porsev (RUS) Katusha
9 Kévin Reza (FRA) FDJ.fr
10 Nick Van Der Lijke (NED) LottoNL-Jumbo
1 Alberto Contador (ESP) Tinkoff-Saxo 68hr 12min 50sec
2 Mikel Landa Meana (ESP) Astana 0:04:02
3 Fabio Aru (ITA) Astana 0:04:52
4 Andrey Amador (CRC) Movistar 0:05:48
5 Yury Trofimov (RUS) Katusha 0:08:27
6 Leopold Konig (CZE) Sky 0:09:31
7 Damiano Caruso (ITA) BMC Racing 0:09:52
8 Steven Kruijswijk (NED) LottoNL-Jumbo 0:11:40
9 Alexandre Geniez (FRA) FDJ.fr 0:12:48
10 Ryder Hesjedal (CAN) Cannondale-Garmin 0:12:49