Cristiano Ronaldo, bidding for his sixth Champions League title, scored a 28th-minute header to put Juve ahead after a 1-1 first-leg draw, but Donny van de Beek levelled for Ajax before half-time.
Teenage centre-back De Ligt struck midway through the second period, though, to seal a 3-2 aggregate win and set up a last-four clash with either Manchester City or Tottenham.
The young Dutch side had already eliminated three-time defending champions Real Madrid en route to the quarters, overturning a 2-1 home defeat against the Spanish side with a memorable 4-1 victory at the Santiago Bernabeu.
Juventus had been looking to reach the Champions League semi-finals for the third time in the past five seasons.
But Ronaldo, who scored an away goal last week with a diving header in Amsterdam, was Juve's only weapon against the impressive Dutch side.
The 34-year-old was signed for 100 million euros ($117 million) last summer from Real Madrid in a bid to win the European trophy for the first time since 1996, when they beat Ajax in the final.
Massimiliano Allegri had been forced to reshuffle his side because of injuries, with Paulo Dybala returning in place of the injured Mario Mandzukic, while captain Giorgio Chiellini was also sidelined.
Ajax's defence took a hit when Noussair Mazraoui, who had replaced the suspended Nicolas Tagliafico, limped off on 11 minutes with an ankle injury, with Daley Sinkgraven coming on.
Ajax goalkeeper Andre Onana dived to keep out a scorching Dybala half-volley in the 20th minute.
- Ronaldo leaves Onana no chance -
But Ronaldo latched onto a Miralem Pjanic corner with a downward header that left Onana without no chance.
It was the Portugal star's 126th Champions League goal and sixth of this campaign, having now scored in his past six European games against Ajax, netting nine goals in total.
But Van de Beek soon silenced the cheers of the home crowd when he controlled a wayward Hakim Ziyech shot six minutes later, rolling the ball past Szczesny to cancel out Juventus' away goal and make it 2-2 on aggregate.
Teenage striker Moise Kean replaced Dybala after the break, but it was the Dutch who turned on the style, with only Szczesny's reflexes keeping Juventus in the tie.
The Polish keeper denied Ziyech from close range with one hand, and minutes later tipped Van de Beek's curling effort over the bar.
The Juventus back-line struggled with the pace of the Dutch team with Pjanic doing well to deny Ziyech a tap-in.
But Erik ten Hag's side's incessant pressure paid off with 19-year-old skipper De Ligt towering above Alex Sandro and Daniele Rugani to head home Lasse Schone's corner on 67 minutes.
Ziyech looked as if he had fired a third past Szczesny, but his goal was ruled offside after a VAR check.
And the Dutch visitors held on, with Ronaldo unable to make a difference after his incredible hat-trick had pulled Juventus into the quarter-finals in the last-16 win over Atletico Madrid.
Four-time winners Ajax won their third consecutive title in 1973 at the expense of Juventus, and last lifted the trophy in 1995, with their last semi-final appearances ending in defeat by Juve 22 years ago.