Real Madrid overcame Valencia on Wednesday to advance to the final, and it will be a Clasico affair this weekend, with Barcelona joining Carlo Ancelotti's side by edging past Real Betis in Saudi Arabia, winning the shootout following a 2-2 draw.
Barcelona are the most successful team in the history of the Spanish Super Cup, lifting the trophy on 13 occasions, although they have not won the competition since 2018.
Xavi's side twice led through Robert Lewandowski and Ansu Fati, but Real Betis answered back on both occasions, with Nabil Fekir and then Loren Moron finding the back of the net.
Barcelona won the resulting shootout 4-2, though, to secure their position in the final of the competition.
Lewandowski had a half-chance in the 11th minute when Raphinha delivered low into the Real Betis box, but the Poland international's attempt was kept out by Claudio Bravo.
Real Betis had a chance of their own in the 22nd minute when Fekir made the most of a poor back-pass from Jules Kounde before rounding Marc-Andre ter Stegen, but Ronald Araujo made a vital block.
Barcelona thought that they had taken the lead in the 23rd minute through Pedri, but the effort was chalked off for offside, with Raphinha, who had delivered the cross into the box, penalised.
Ter Stegen then did brilliantly to keep out a powerful header from German Pezzella, before Barcelona took the lead in the 40th minute of the contest.
Ousmane Dembele provided the assist, with the Frenchman delivering into Lewandowski, who saw his first effort blocked before managing to convert past the advancing Bravo.
Real Betis could have equalised before the half-time whistle, but Ter Stegen made another important save, this time keeping out an effort from Luiz Henrique.
Barcelona should have doubled their advantage minutes into the second period when Jordi Alba delivered an excellent low cross towards the far post, but neither Lewandowski nor Raphinha could convert when it looked easier for both to score.
Real Betis levelled the scores in the 77th minute of the contest through Fekir, who picked out the bottom corner with a clever effort after Henrique had rolled the ball towards him.
Lewandowski had the ball in the back of the Real Betis net for a second time in the 81st minute, but the Poland international's effort was ultimately disallowed for offside in the build-up, and the two teams could not be separated at the end of 90 minutes, which led to extra-time.
Fati did have a brilliant chance to win it for Xavi's side in the 93rd minute, but his effort was kept out by Bravo.
The Spain international was not to be denied, though, and he sent Barcelona back ahead shortly into extra-time, finding the back of the net with a brilliant volley after a corner was only half-cleared.
Real Betis answered back in the 101st minute through Moron, with the forward producing a brilliant back-heel after controlling a cross from Henrique.
Manuel Pellegrini's side finished with 10 men, as Andres Guardado was sent off, with the experienced midfielder picking up two bookings in the space of seven minutes, and penalties were ultimately required to determine which side would progress to Sunday's final.
Willian Jose put Real Betis ahead with a cool effort, before Lewandowski levelled it up; Moron then sent Real Betis into a 2-1 lead, before Franck Kessie converted for 2-2.
Pellegrini's side were unsuccessful with their next attempt, as Juanmi saw his effort saved by Ter Stegen, which allowed Fati to send Barcelona 3-2 ahead in the shootout.
William Carvalho was then kept out by Ter Stegen, which allowed Barcelona to triumph, with Pedri finding the back of the net to send the Catalan outfit into the final.