The first leg ended 1-0 in Bergamo thanks to an early Gonzalo Higuain goal, and Juventus also won the second when Miralem Pjanic slotted in a 75th-minute penalty awarded after Blaise Matuidi was fouled in the box.
The three-time holders will play AC Milan who battled past Lazio 5-4 on penalties in the Stadio Olympico after their semi-final remained goalless after extra time.
Nikola Kalinic almost scored the winner after 117 minutes but sent the ball over the bar when alone in front of goal, sending the game to penalties.
AC Milan could thank the saves of teenage goalkeeper Gianluigi Donnarumma for a spot in the final in Rome on May 9 with centre-back Alessio Romagnoli scoring the winning penalty.
“It was a night of suffering. This is a very young team, we must get them back to being the team that made the fans dream,” said Milan coach Gennaro Gattuso.
The win extends Gattuso’s unbeaten streak with AC Milan to 13 games, with six straight wins.
But the former AC Milan midfielder insisted there was too much talk about him and how he has turned around the team.
“I’m not a tactical guru. I’m just a lucky guy.”
Five-time winners Milan last won the Cup in 2003, with their last final in 2016.
Earlier Juventus took on Atalanta, whose Serie A game Sunday was snowed off, with light snowfall still in the Allianz Stadium.
“Compliments to the lads for what they did tonight and are doing this season,” said coach Massimiliano Allegri.
– ‘Not an obsession’ –
It will be a record 18th final for Juventus with Allegri’s side bidding for a 13th Cup in total.
“We will play in a historical stadium, but it must not become an obsession,” continued the Juventus coach of their bid for a record fourth Cup crown.
“In the first half we had difficulty closing them down, after the break Douglas Costa started playing in a centre-forward role and that broke the game open.”
Higuain missed out as he recovers from a sprained ankle.
Atalanta had come out firing with Alejandro Gomez sending over the bar with Gianluigi Buffon tested as he latched on to Josip Ilicic’s deflected cross pushing over the top.
Gomez thought he had scored the equaliser for Atalanta after the break with Buffon off the line, lobbing the Juventus captain, only for the ball to bounce off the outside off the post.
The breakthrough came when Juventus were awarded a penalty when Matuidi went down under pressure from defender Gianluca Mancini, with Pjanic slotting in to the fury of Atalanta coach Gian Piero Gasperini.
“That penalty was non-existent,” blasted Gasperini as his side missed out on their bid for just a second Cup title after 1963.
AC Milan and Lazio battled for 220 minutes in total between the San Siro and the Stadio Olympico in a tie between two ambitious sides who have rediscovered their form in Serie A and the Europa League.
Lazio threatened early with AC Milan staying in the game thanks to Donnarumma who tipped over a Ciro Immobile shot within the first five minutes and then denied Sergej Milinkovic-Savic with his legs.
Lazio goalkeeper Thomas Strakosha also did well to clear off Suso after a quarter-of-an hour, but almost created an own goal by badly clearing Hakan Calhanoglu freekick.
Both sides had their chances in the second half with Milinkovic-Savic again missing in the final minute.
After their gruelling match both sides face tough weekends in Serie A with Lazio hosting Juventus and AC Milan a derby against city rivals Inter Milan.
Would you like to place a soccer bet? Click here to get started in 3 easy steps.