The Portuguese champions carried a 2-1 lead into the game in Turin and held on with Juve’s best chance coming late in the first half.
Benfica defender Luisao made a goal-line clearance from Arturo Vidal’s header with the visiting goalkeeper Jan Oblak already beaten.
The Portuguese champions had midfielder Enzo Perez sent off for a double booking with 23 minutes remaining but defended deeply to hold on.
Benfica will meet Sevilla in the final on May 14 at the Juventus stadium, the venue of tonight’s game.
Juve coach Antonio Conte fielded Carlos Tevez, who ended his five-year European goal drought against Benfica last week, alongside Fernando Llorente in attack.
The hosts made a purposeful start as they looked to overturn their first-leg deficit and Andrea Pirlo’s shot forced an early save from Oblak.
The Serie A leaders continued to press forward and in the 20th minute, Vidal’s right-footed volley went just over the crossbar.
At the other end, Benfica’s Maxi Pereira drilled a right-footed shot from 30 yards that went off target.
Juve twice had the chance to go in front before the interval but Leonardo Bonucci’s header went just wide while soon after, Vidal’s goal-bound attempt was cleared by Luisao.
The visitors created a good chance early in the second half when the ball fell to Rodrigo in the heart of the area and his right-footed shot went over the bar.
On the hour mark, Pirlo warmed the hands of Oblak with a powerful free-kick which the keeper saved.
Juve, who had not reached the final of the competition since 1995, brought in Daniel Osvaldo and Claudio Marchisio with 12 minutes remaining.
Osvaldo then had a goal disallowed for offside shortly after.
With their European dreams fading, Juve piled forward in the closing stages.
Oblak made a great save from Martin Caceres’ header as Benfica denied Juve the chance to reach the final that will be played at their own ground.