Buitrago took second at 1 minute 31 seconds behind the Trek-Segafredo rider, while Antonio Pedrero was third at 2:19 behind the Italian, with Carthy in fourth.
Meanwhile, Carapaz retained the overall lead despite crashing with 171km remaining, being one of around a dozen riders to be brought down when the back of the peloton came to a standstill after a collision, with Saturday's stage 14 winner Simon Yates also hitting the deck.
But the 2019 Giro winner recovered to finish the stage and retain a seven-second advantage over Hindley, with Joao Almeida 30 seconds behind the Ecuadorian, while Koen Bouwman edged ahead of Diego Rosa in the mountain classifications.
Ciccone's finest hour
Ciccone has experienced success at the Giro d'Italia before, claiming a stage-10 win back in 2016 and a stage-16 victory during an impressive showing back in 2019. But the Italian missed the 2020 edition of the race after testing positive for COVID-19 before withdrawing after a crash the following year, and was overcome with emotion after ending two frustrating years by claiming an impressive triumph.
1. Giulio Ciccone (Trek-Segafredo) 4:37:41
2. Santiago Buitrago (Bahrain Victorious) + 1:31
3. Antonio Pedrero (Spa/Movistar) +2:19
4. Hugh Carthy (EF Education-EasyPost) +3:09
5. Martijn Tusveld (Team DSM) +4:36
1. Richard Carapaz (INEOS Grenadiers) 63:06:57
2. Jai Hindley (Bora-Hansgrohe) +0:07
3. Joao Almeida (UAE Team Emirates) +0:30
1. Arnaud Demare (Groupama-FDJ) 238
2. Mark Cavendish (Quick-Step Alpha Vinyl) 121
3. Fernando Gaviria (UAE Team Emirates) 171
King of the Mountains
1. Koen Bouwman (Jumbo-Visma) 109
2. Diego Rosa (EOLO-Kometa) 92
3. Jai Hindly (Bora-Hansgrohe) 62