Barca have run into a miserable patch of form since they beat
They rode their luck 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 Copa in 1998 and seal a record 24th triumph.
Athletic have lifted the trophy 23 times.