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)
