Holders Juventus suffered an almighty scare on their way to a second successive Italian Cup final, dominating Inter Milan at a penalty shoot-out after Roberto Mancini's men won 3-0 on the night to level their semi-final tie.
Juventus, who claimed their first league and Cup double in 20 years last May, will now meet AC Milan in the May 21 at Rome's Olympic Stadium.
But in a rain-hit San Siro encounter that saw Inter dominate throughout, Juve coach Massimiliano Allegri was soon regretting his decision to deploy a second string side.
With a 3-0 cushion from the first leg, Allegri rested goalkeeper Gianluigi Buffon and striker Mario Mandzukic, while Giorgio Chiellini, Claudio Marchisio and Martin Caceres were all injured.
But, under the cosh following a string of poor results, Mancini cracked the whip and the Nerazzurri responded in style to take a 2-0 lead by the 49th minute thanks to Marcelo Brozovic and Ivan Perisic.
When Brozovic hit his second from the spot eight minutes from time after a dubious penalty decision, the tie was forced to extra time.
After two thrilling but goalless periods, Rodrigo Palacio's miss from the spot made the difference as Juve stayed on track for a second consecutive double.
Defender Leonardo Bonucci scored Juve's fifth and final spot-kick to start the celebrations, although he will miss the final due to suspension after earning a caution on the night.
He admitted to Rai Sport: "We made life difficult for ourselves, I think tonight we played the worst ever game since I've been at Juventus.
"We were lucky to take it to penalties... we didn't have the right approach to the game. Inter didn't have anything to lose, and we made it easy for them."
Inter coach Roberto Mancini could only lament: "We deserved to win this. We were very unlucky.
"But it was a great performance. I can only compliment the lads. I hope this gives us the extra spur to try and finish in third place."
Inter threatened from the outset, Perisic drilling just wide of Norberto Neto's upright but the hosts were rewarded for their efforts on 17 minutes when Slovenian midfielder Brozovic fired past Neto after Gary Medel had bundled Hernanes off the ball.
Juve looked out of sorts and another error, this time from Daniele Rugani, allowed Adem Ljajic to unleash a curling shot that bounced off the top of the bar.
Ljajic, meanwhile, fired inches wide of the near post to give Juve plenty of reason for reflection at the interval.
Inter resumed in similar fashion and after just four minutes Eder burst down the right to fire a perfect delivery for Perisic, who tapped the ball past Neto at the back post.
The threat now looked real and Juve upped their game, striker Simone Zaza powering through the middle and rounding Inter 'keeper Juan Carrizo only to hit the upright.
From the corner, Inter launched a counter that saw Ljajic's angled drive shave the far post.
An increasingly worried Allegri switched to a three-man defence when he replaced Stephan Lichsteiner with Andrea Barzagli, but the referee pointed to the spot after Rugani was ruled to have fouled Perisic in the area, despite first making contact with the ball.
Neto was unlucky as Brozovic's spot-kick squirmed under him to level the tie 3-3 on aggregate, but the 'keeper then produced a great reflex save in the final minute of regulation time to parry Perisic's first-timer from close-range.
Moments later Perisic earned a yellow card after he got up from a rash tackle on Juan Cuadrado to take the Colombian by the throat.
Both sides created chances in extra time, Neto palming Perisic's free header over the bar and Zaza firing an angled drive inches past the far post.
In the dying seconds, Carrizo produced two quickfire saves on Alvaro Morata, including a superb one-handed effort from the Spaniard's right-footed curler, to force the tie to penalties.