Former Madrid striker Alvaro Morata scored the priceless equalizer for Juventus against his old club in the 57th minute at the Santiago Bernabeu Stadium.
Madrid was trailing 2-1 after last week's first leg in Turin and the defending champions looked to have turned the contest around in the 23rd minute when Cristiano Ronaldo scored a penalty to give his side a 1-0 lead.
But Morata's goal from close range meant there will be no all-Spanish final in Berlin on June 6, and Juventus gets a chance to life the trophy for a third time.
"This doesn't end here," Morata said. "We want to create history."
Juventus coach Massimiliano Allegri paid tribute to his match-winner and the rest of the team.
"Alvaro has grown physically, mentally and tactically," he said. "I'm proud, this is an extraordinary squad. They've outdone themselves."
For Madrid, the pursuit of an 11th European Cup title ended at its own stadium after an impressive run of form.
"It's hard," Madrid defender Sergio Ramos said. "The team fought but we have to say goodbye. We thought we had done enough with the goal, but we let it slip and paid the price. Their goal hit our team's morale hard."
Madrid began attacking right from the start, with Gareth Bale heading over the crossbar of Gianluigi Buffon's goal from a Marcelo assist in the very first minute and Karim Benzema failing to find the target five minutes later. Benzema was picked for the sole striker position even though the France international only recently began full training with the rest of the squad following an injury.
Ronaldo fared no better minutes later with a dipping free kick that Buffon tipped over the bar.
Although Madrid was enjoying plenty of possession, its midfielders found it difficult to threaten a composed Juventus defence.
The deadlock ended though when Giorgio Chiellini brought down James Rodriguez with a clumsy challenge in the area and Ronaldo converted the resulting penalty for his 10th Champions League goal of the season.
The Portugal star nearly created a second goal seven minutes later when he raced into the left side of the area on the break, only for his chipped pass across the face of the goalmouth to be intercepted.
Further shots from Benzema and Ronaldo either flew wide of the target or were saved by a Buffon on impressive form, while Rodriguez was given a yellow card for diving in the box after contact with Arturo Vidal in the last minute before the break.
Both sides had half-chances after the re-start, but Morata made no mistake with his opportunity in the 57th.
Madrid goalkeeper Iker Casillas punched out a cross from Andrea Pirlo, Vidal lofted the ball back into the area and Paul Pogba, just outside the six-yard box, out-jumped Ramos to head the ball to the unmarked Morata. The 22-year-old Spaniard calmly beat Casillas with a left-footed shot on the bounce.
Morata, who was with Madrid from 2008-2014, did not celebrate - repeating his reaction after scoring in the first leg.
"It's a strange sensation," Morata said. "I'm moved because it was an important goal, but it's a difficult situation for me."
Madrid has a buy-back clause on the player and club president Florentino Perez had wanted to include a sub-clause saying the Spain forward couldn't play against his old club. That move was rejected by UEFA and Juventus.
As the minutes passed, Madrid kept pushing forward in search of an equalizer and Bale missed a good chance to double Madrid's tally, only for the forward to shoot just wide from Marcelo's cross in the 62nd minute.
Javier Hernandez came on for Benzema and soon sent a shot over the bar in the 68th, while Bale headed over the top minutes later, summing up a frustrating night for both the Welshman and his side.
"I think Gareth had the greater chances of scoring with a header, so I kept him in there," said a sombre-looking Madrid coach, Carlo Ancelotti. "I don't give myself grades, but I'd give myself a 10 because I put in a lot of time and I like what I do."
For Juventus, the result puts the club on course for a treble, having already secured the Serie A title and a place in the Italian Cup final in Rome against Lazio. Originally scheduled for June 7, the domestic final was moved to May 20 after Juventus sealed its place in the Champions League decider.
Its rival in Berlin next month, Lionel Messi's Barcelona, is also on course for a treble.