Martin Braithwaite got the decisive goal, a diving header early on in the additional 30 minutes.
Ousmane Dembele had opened the scoring for Barca, who lost the first leg 2-0.
Lucas Ocampos missed a penalty for Sevilla, who then had Fernando sent off just before Gerard Pique dramatically levelled the tie at 2-2 in added time.
Barca, aiming for a record-extending 31st Copa del Rey win, will face either Athletic Bilbao or Levante in the final, with their last-four tie 1-1 after the first leg in Bilbao.
Preparations for Wednesday’s game were overshadowed by former president Josep Maria Bartomeu being arrested on Monday and the club’s Camp Nou offices being raided in a probe related to allegations of improper management and business corruption.
The club will elect a new leader on Sunday and the three candidates, Joan Laporta, Victor Font and Toni Freixa, were all present in the stands to witness the comeback.
Dembele gave the home side the perfect start but the tie could have turned out very differently had Marc-Andre ter Stegen not saved the penalty from Ocampos, who was himself fouled for the spot kick by Oscar Mingueza.
That set up the dramatic finale, which included Fernando’s dismissal for a foul on Francisco Trincao – and a red card for Sevilla striker Luuk de Jong, who was protesting from the stands after having been substituted.