Coppa Italia: Fiorentina 0 Juventus 3

The Italian champions suffered their first home loss since 2013 in the semi-final first leg but produced an excellent display in Florence as goals from Alessandro Matri, Roberto Pereyra and Leonardo Bonucci secured their progression.

Making the win more impressive was the amount of stars Juventus were without. Forward Carlos Tevez missed with a muscular problem while Andrea Pirlo (calf) and Paul Pogba (hamstring) remained on the sidelines and goalkeeper Gianluigi Buffon was rested.

Their win was soured by an 88th-minute red card to forward Alvaro Morata, a decision which seemed harsh. Morata's tackle on Alessandro Diamanti was clumsy, but not reckless. He will now join Claudio Marchisio in missing the final, after the midfielder was shown a second-half yellow card.

Despite the late cards, Massimiliano Allegri's men were more than comfortable against a flat Fiorentina and will now meet either Napoli or Lazio in the June 7 final in Rome.

Juventus last lifted the Coppa Italia in 1995, beating Parma over two legs, but have lost three finals since, most recently to Napoli in 2012.

Fiorentina's defeat means their own drought - which runs back to 2001 - continues. They lost last season's final to Napoli.

Mohamed Salah - so superb since joining Fiorentina on loan from Chelsea in January - tormented Juve in the first leg, scoring both goals in their 2-1 away win.

And he was nearly at it again as early as the fourth minute, after he wriggled his way into the penalty area before scoring, only to see the effort ruled out for his push on Bonucci in the build-up.

It was an early warning sign and Fiorentina would go on to control the first 20 minutes before falling behind, after Marchisio broke down the right and found Matri, who played in Morata.

And while the Spaniard's effort was blocked, Matri pounced on the loose ball to prod past Neto and level the tie.

Stefano Sturaro went close as Juve pressed for a second, while at the other end, Fiorentina had another goal chalked off as Gonzalo Rodriguez was correctly adjudged offside before he nodded in a free-kick.

Juventus then took the aggregate lead on the stroke of half-time, as Pereyra, a constant threat with his powerful forward runs, tapped in the rebound from close range after Morata's effort was saved.

Fiorentina were expected to respond after the break and they did initially, as Mario Gomez fired into the side netting before Salah missed the target after a dangerous run.

But their revival fizzled out as Pereyra's shot was nearly deflected in by Stefan Savic before the same player forced a good save from Neto.

And Juventus would seal their victory from the resulting corner, as Bonucci got free of his man to volley home from seven yards in the 59th minute.

Rodriguez was then booked for an elbow on Morata as they contested a high ball, but Marchisio - who was passed fit to play despite fears he suffered a serious knee injury on international duty - was booked for his remonstrations.

Alberto Aquilani fired just wide as Fiorentina sought a response but the match petered out in the latter stages, as Juventus - leading Serie A by 14 points and still involved in the UEFA Champions League - began to dream of a historic treble.

And although Morata's late dismissal was unfortunate, Allegri will hope to have the likes of Tevez, Pirlo and Pogba back for the final.