The tie was delicately poised following a 1-1 draw in the first leg at Camp Nou, but Barca scored three times without reply in the second period to ease into the final once again.
The Catalan giants are bidding to win the competition for the fifth time in succession, while the Champions League now seems Madrid's only realistic chance of landing silverware this season.
The pair will do it all again on Saturday night, though, as Madrid host Barca once again, this time in La Liga.
The first nine minutes of El Clasico passed without incident, but tempers were raised in the 10th minute when Ivan Rakitic made a late challenge on Casemiro, which brought a furious reaction from Sergio Ramos & Co.
Vinicius then had a brilliant shooting opportunity inside the Barca box in the 18th minute, but the Brazilian fired over Marc-Andre ter Stegen's goal when he should have at least tested the German goalkeeper.
Vinicius did register a shot on target in the 23rd minute following a mix-up inside the Barca box, but Ter Stegen did well to make the stop during a period where his team were coming under pressure.
Barca's best spell of the first half came either side of the 30-minute mark, with Lionel Messi seeing more of the ball and Dembele causing problems in the wide positions.
Los Blancos goalkeeper Thibaut Courtois was extremely comfortable, though, and the opportunities were coming down the other end of the field.
Madrid's next chance fell to Karim Benzema in the 36th minute, but the Frenchman, having been found by Vinicius, saw his effort saved by Ter Stegen.
Vinicius then had another opportunity of his own following a smart cross from Sergio Reguilon, but the Brazilian hooked over the crossbar from a good position as Barca survived another dangerous moment.
Ernesto Valverde's side only managed one attempt in the opening 45 minutes and there is no question that they were fortunate to enter the half-time interval on level terms, although still behind on away goals.
Benzema headed a Toni Kroos free kick just over the Barca crossbar early in the second period, although the linesman had signalled for a foul and therefore it would not have counted.
Moments later, the ball was in the back of the net down the other end as Barcelona took the lead.
Kroos and Casemiro both had attempts in the period that followed, but the former missed the crossbar from distance before the latter headed wide of the post from a positive position inside the Barca box.
Madrid had an even better opportunity just before the hour when Reguilon delivered a dangerous cross towards Vazquez, but the attacker failed to convert under pressure from Jordi Alba.
Ter Stegen made a stunning save to keep out a header from Reguilon in the 63rd minute, before the Barcelona goalkeeper denied Dani Carvajal from distance four minutes later as the pressure continued.
Gareth Bale replaced Vazquez moments after Vinicius had curled just wide of the post, but Madrid's chances of a comeback were all but ended in the 69th minute when Raphael Varane turned into the back of his own net.
Once again Dembele delivered a stunning cross into the home side's box and Varane - under pressure from Luis Suarez - converted from close range to leave Madrid needing three goals.
The home side's already-slim hopes were completely ended in the 73rd minute, though, when Luis Suarez scored from the penalty spot after the Uruguay international had been fouled by Casemiro.
Madrid continued to press late on as they looked to at least give their supporters something to cheer, but Barca kept their clean sheet in tact to ease into the final courtesy of a 4-1 aggregate win.
REAL MADRID (4-3-3): Navas; Carvajal, Varane, Ramos, Reguilon; Modric, Casemiro (Valverde 75'), Kroos; Vinicius (Asensio 81'), Benzema, Lucas (Bale 68')
BARCELONA (4-3-3): Ter Stegen; Semedo, Pique, Lenglet, Alba; Rakitic, Roberto, Busquets (Arthur 86'); Messi, L Suarez (Vidal 78), Dembele (Coutinho 75')