Lionel Messi struck late to help Barcelona seal a place in the King's Cup final on Wednesday, a 1-1 draw at Real Mallorca completing a 3-1 aggregate victory for the Primera Liga leaders.
Barcelona will play Athletic Bilbao in the May 13 final in Valencia after the Basque club beat Sevilla 3-0 at home to overturn a 2-1 defeat from last month's first leg.
Barca have run into a miserable patch of form since they beat Mallorca 2-0 in the first leg at the Nou Camp and the latest result means they are without a win in five matches in all competitions.
They rode their luck on Wednesday in a match that saw both teams reduced to 10 men.
Gonzalo Castro gave the islanders the lead with a powerful drive that flew into the top left corner at the end of the first half.
Barca goalkeeper Jose Manuel Pinto saved Jose Luis Marti's weak penalty early in the second half, awarded after defender Martin Caceres felled Castro and earned himself a straight red card.
Mallorca lost defender Josemi to a second yellow card in the 65th minute for bringing down Messi.
The Argentine made it 1-1 in the 81st minute when he pounced on a defensive error and lifted the ball over German Lux.
Fernando Llorente was the matchwinner for Athletic in Bilbao, scoring one and creating two to help his side reach their first final in 24 years.
Sevilla were under pressure immediately at a sodden San Mames and the home side were in front within four minutes.
Llorente flicked on a long throw and midfielder Javi Martinez buried the ball at the second attempt.
The powerfully built striker doubled the lead with a header from Fran Yeste's cross and then released Gaizka Toquero on the left of the penalty area for the midfielder to put Athletic 3-0 ahead before the break.
It will be Barca's first appearance in the final since they beat Mallorca on penalties to win a second consecutive Cup in 1998 and seal a record 24th triumph.
Athletic have lifted the trophy 23 times.