A combination of stout defending from Juventus and imprecise finishing from Barcelona meant they could not repeat their miraculous performance that saw the Blaugrana come back against PSG in the round of 16.
Barcelona pressed to trim the deficit in the first half, giving Juventus chances to counter, first as Gonzlo Higuain blasted over the bar, before Juan Cuadrado's overhead flick was also too high.
Jordi Alba came close to delivering the opener on 19 minutes, but he could not get a touch to Lionel Messi's lob into the box.
And a minute later Messi had the Camp Nou crowd ready to erupt when he took a touch in a box but dragged his shot wide of the post with half of the net to aim at.
Barcelona confronted Dutch referee Bjorn Kuipers multiple times after some physical play from Juventus -- notably pulling at Messi's shirt and blocking off Neymar at the top of the box -- but the official was not impressed.
Messi tried his luck from distance -- drawing a save from Gianluigi Buffon at the near post -- before following up himself to put a second effort into the side netting.
Andres Iniesta received the first yellow card of the match for taking out Cuadrado. Neymar soon followed him in the book for a wild tackle on Miralem Pjanic moments after the Juventus man had undercut Messi as they jumped for a ball.
The card meant the Brazilian would miss Barcelona's next match if they progressed, but that was looking unlikely as they entered half-time still trailing by three goals.
Juventus had the first chance after the break as Cuadrado was given time to shoot from an angle, but his strike along the ground skimmed past the post, and at the other end Messi sent another hard, low effort wide.
Barcelona were undeterred, and Luis Suarez earned a free kick on the edge of the area from a Giorgio Chiellini foul that saw the defender booked, but Messi's free kick looped over the goal.
Messi had another opportunity after the hour mark to volley home as the ball came back to him following a corner, but again the Argentine could not keep his shot on target.
Higuain was booked for a sliding challenge on Suarez, meaning he will miss the first leg of the semifinals.
It was Sergi Roberto's turn to shoot as he made space for himself in the box and took aim at the far corner, but the accuracy was not there.
Barcelona earned corner after corner -- 13 in all -- but could produce no joy in the late stages and for all their attempts finished with only a single shot on target, their fewest in a home Champions League game in the past seven years.
Juventus' amazing defensive form in the Champions League stretched to 531 minutes without conceding, with the last goal against them coming on Nov. 22 in the group stage against Sevilla.
They reach their seventh Champions League semifinal, the most of any Italian club, and matched AC Milan's Italian record of 12 European Cup semis.
Juventus produced an exceptional defensive performance to reach the semi-finals of the Champions League after stopping Barcelona from scoring at the Nou Camp.
Trailing 3-0 from the first leg, Barca peppered the Italian goal but failed to repeat their last-16 heroics when they overturned a first-leg 4-0 deficit to beat Paris St-Germain.
Lionel Messi, who had earlier been denied by Gianluigi Buffon, fired wastefully over the bar while Luis Suarez and Neymar also spurned chances on a night Barca were restricted to one shot on target.
Juve's Gonzalo Higuain fired tamely at Marc-Andre ter Stegen and Juan Cuadrado missed another chance but the final whistle was celebrated wildly by the champions of Italy, who have not conceded a single goal from open play in this season's Champions League.
Juventus join Real Madrid, Atletico Madrid and Monaco in Friday's last-four draw (from 11:00 BST).
Juve march on after defensive masterclass
The champions of Italy are 180 minutes away from the final in Cardiff on 3 June after a superb defensive performance as Barca and their formidable strike force failed to score over two legs.
Juventus join Manchester United (2007-08) and Bayern Munich (2012-13) as one of only three teams that have stopped the Catalans scoring in both legs of a Champions League tie.
They were as brave and aggressive as they were calm and disciplined with Leonardo Bonucci and Giorgio Chiellini monumental at the heart of the defence.
When Barca did manage to carve out chances, Suarez, Messi and Neymar failed to deliver.
All three had chances before the interval. In the space of a few minutes, Suarez had a goal-bound shot blocked, Messi dragged a chance from 12 yards and Neymar volleyed wide.
It said everything about Juve's defensive display that Buffon only had one save to make, the 39-year-old denying Messi before the Barca forward hammered the rebound into the side-netting.
Yet Juve, as adventurous going forward as they were solid at the back, might have beaten the Spanish champions for the second time in a week.
Higuain should have done better from close range after a ball over the top before Cuadrado flashed a chance narrowly wide on the counter.
In the end it did not matter, Juve and their travelling fans celebrated a night to remember.
Barca's season in danger of unravelling
Barca boss Luis Enrique will leave the Nou Camp this summer having failed to reach the semi-finals for a second successive season.
This was every bit as painful as their exit at the hands of La Liga rivals Atletico Madrid at the same stage 12 months ago.
They had 19 shots on the night - yet only one on target as Juve avenged their defeat against the same opponents in the 2015 final.
Neymar, who scored twice in the 6-1 return leg win over Paris St-Germain in the previous round, ended this game in tears with Barcelona's season in danger of falling flat.
They face Real Madrid in El Clasico on Sunday (19:45 BST) knowing defeat will leave them six points behind the leaders, who have a game in hand.
Barca are in the final of the Copa del Rey but Enrique knows that even if his side beat Alaves on 27 May, it will be scant consolation if they fail to win La Liga following another disappointing European campaign.
Man of the match - Giorgio Chiellini (Juventus)
Buffon in sight of his first Champions League triumph - the stats
- Juventus keeper Gianluigi Buffon has now kept 46 clean sheets in the Champions League. Only Iker Casillas (54), Edwin van der Sar (50) and Petr Cech (47) have more.
- Buffon's 2016-17 Champions League campaign: Nine games seven clean sheets, two goals conceded.
- Juve last won the Champions League in 1996.
- Lionel Messi had five shots off target in the match, his most in a Champions League game since September 2015 against Roma (also five).