Inhopparen Federico Valverde blev hjälte i den åttonde förlängningsminuten när han höll sig framme i straffområdet efter en omställning och tryckte in 3-2.
Därmed har Real Madrid fortfarande chans på sin tolfte supercuptitel.
”Marängerna” tog ledningen med 1-0 i första halvlek och ledde med 2-1 med sju minuter kvar av ordinarie tid. Då kvitterade supertalangen Ansu Fati för Barcelona och gav Xavis manskap nytt hopp i saudiarabiska Riyadh.
Men roligare blev det inte för katalanerna.
Valverdes 3-2-mål i förlängningen betyder att de vitklädda är klara för ännu en final.
Där väntar antingen Atlético Madrid eller Athletic Bilbao, som möts i morgon.
Finalen spelas på söndag.
KLIPP: Skandalscener: Domaren blåste av matchen för tidigt
Spanska Supercupen
FC Barcelona
2 - 3
2-2 (Fulltid)
Real Madrid
Första halvlek
- F. Torres23'
- 25'0 - 1Vinícius Júnior (Benzema)
- 1 - 1L. de Jong42'
Halvtid
- PedriF. de Jong46'
- EzzalzouliF. Torres46'
Andra halvlek
- Alves51'
- FatiL. de Jong66'
- 68'RodrygoAsensio
- 72'1 - 2Benzema
- 75'Casemiro
- DepayGavi78'
- GonzalezDa. Alves79'
- 83'ValverdeModric
- 2 - 2Fati (Alba)83'
90 minuter
- 91'VázquezCarvajal
Förlängning, första halvlek
- 98'2 - 3Valverde (Rodrygo)
- 99'Valverde
Förlängning, andra halvlek
- 110'CamavingaVinícius Júnior
- JutglàEzzalzouli111'