Ajax Amsterdam followed up their elimination of Real Madrid by producing a spell-binding display of inventive, passing football to win 2-1 away to Juventus on Tuesday and end the Serie A team's dreams of winning the Champions League.
Ajax's 19-year-old captain Matthijs de Ligt headed the winner from the corner in the 67th minute of the quarterfinal second leg as the Dutch side came from behind to clinch a 3-2 aggregate win and reach the last four for the first time since 1996-97.
Cristiano Ronaldo, aiming for a fourth successive Champions League title after winning the last three with Real Madrid, put Juventus ahead in the 28th minute with a typically emphatic header, his sixth goal of the competition.
But Donny van de Beek levelled six minutes later before the visitors swept Juventus aside in the second half with wave after wave of attacks as they earned a semifinal against Manchester City or Tottenham Hotspur.
"Can we can go on to win the competition? Well, we are in the semifinals now. And we have eliminated two of the favourites in the last two rounds. The next games will be very difficult, but so were these ones. So who knows?," said De Ligt.
Frenkie de Jong added: "We dominated after the break and were well worth our victory. In fact, we probably should have won by more."
Ajax goalkeeper Andre Onana gave his team an early scare when his clearance was charged down by Emre Can but the rebound flew wide.
Ajax settled well after that but, despite not playing well, Juventus went ahead when Ronaldo got away from the defenders to score the 126th Champions League goal of his career.
There was a long delay for the VAR review, the referee eventually going to the pitchside monitor with the ball back on the centre circle ready for the re-start, before the goal was confirmed.
Ajax kept their cool and took six minutes to level, helped by a somewhat lucky break.
Hakim Ziyech's long-range shot hit a defender and fell perfectly for Van de Beek who, unmarked and onside, slotted the ball calmly past Wojciech Szczesny, and then had to wait for another long VAR check before the goal was confirmed.
Ajax took complete control in the second half and their geometric passing repeatedly opened up the Juventus defence, which sorely missed injured veteran Giorgio Chiellini.
Szczesny made one-handed save from Ziyech after Juventus were opened up again and then turned Van de Beek's curling shot over for a corner.
Juventus were rocking but, ironically, Ajax's winner came from an old-fashioned header as De Ligt out-jumped two defenders to score.
Ajax had chances for further goals and Ronaldo's frustration boiled over in stoppage time when he was booked for a lunging tackle from behind near the centre circle.