The Bianconeri claimed a 1-0 win in the first leg last month, and they had to work hard to seal their place in next month's final against a Fiorentina side that dominated possession and had almost twice as many shots.
Federico Bernardeschi got them on their way shortly after the half-hour mark, before Danilo added a second deep into stoppage time at the end of the game.
Massimiliano Allegri's men will face Inter in the final on May 11 at the Stadio Olimpico after the Nerazzurri overcame Milan in their last-four tie.
The best chance of a cagey opening 20 minutes was Dusan Vlahovic's shot from inside the penalty area, which was pawed away by Bartlomiej Dragowski.
The Juve striker should have scored shortly before the half-hour mark, yet Dragowski stood firm to block his attempted chip after he had been played clean through.
Dragowski was at fault for the opener in the 32nd minute, the goalkeeper completely misjudging Alvaro Morata's cross to allow Bernardeschi to volley home from 15 yards after Cristiano Biraghi's header had fallen kindly to him.
Fiorentina finished the first half strongly and they should have gone in at the break level, but Arthur Cabral's powerful drive was straight at Mattia Perin.
Perin kept out Lucas Martinez Quarta's deflected header early in the second half, while at the other end Denis Zakaria cracked an effort against the outside of the post.
Adrien Rabiot saw a goal ruled out by VAR for offside, although it mattered little in the end as Danilo swept home Juan Cuadrado's cross late on to add gloss to the victory.