The hosts overturned last week's 2-1 loss in the Portuguese capital, with a late goal from the Spain striker securing the victory and a final date with Atletico Madrid
The Portuguese side had claimed a 2-1 victory in Lisbon a week ago, but goals from Markel Susaeta, Ibai Gomez and Fernando Llorente were enough to see Marcelo Bielsa's team progress, despite a Ricky Van Wolfswinkel goal.
It was the Portuguese side who came out of the blocks quicker. A poorly-cleared Matias Fernandez corner fell to Anderson Polga, who could only head the ball straight at Gorka Iraizoz when he should have done better.
Soon after, the Chilean sent a free kick well over from distance, but it was not long before the hosts sprung into action.
Llorente brought the ball down well seconds after Fernandez's free kick, but when he finally wriggled free of Xandao, he failed to send a meaningful shot in.
Bielsa's side were starting to apply heavy pressure. Some fantastic footwork from Gomez fooled the Sporting back line, but the 22-year-old could only fire a shot straight at Rui Patricio.
Soon, however, the breakthrough arrived. Llorente padded an Iker Muniain cross straight to Susaeta, who volleyed past Patricio to put his side in front.
The Bilbao goal would have seen the hosts go through on away goals, but Sporting soon set in pursuit of an equaliser.
Diego Capel, the hero of the first leg, sent a deep cross to the far post, but Andre Martin could only send a header wide when he should have done far better. Soon afterwards, Iraizoz was called into action to palm away an Polga header after the Brazilian found himself on the end of Capel's corner.
Throughout Sporting's period of pressure, Athletic continued to fashion chances. Gomez had a header rightly ruled out for offside, before Llorente squeezed a volley goalwards, forcing Patricio to palm the ball away with his fingertips.
The equalier finally came just before the break, though. Another corner proved to be the cause of confusion in the Bilbao defence, and Van Wolfswinkel capitalised by sending a left-footed volley into the bottom corner.
However, the Dutchman's effort was not enough to ensure parity at the break. Llorente held up the ball fantastically once again, and slipped in Gomez, who slipped it past Patricio to level the tie.
The frantic nature of the game continued when the two teams reemerged for the second half. Susaeta forced Patricio into a fantastic save with a speculative effort from the corner of the box, and Javi Martinez sent the resulting corner against the bar.
At the other end, the woodwork soon turned into Athletic's saviour. Emiliano Insua belted a ferocious free kick goal-wards, and a heavy deflection took the ball past Iraizoz, but onto the post.
Soon, though, the match settled into a more steady rhythm. Muniain forced a decent save from Patricio with a tame header, before the Portuguese keeper had Insua to thank when he dropped an Ibai free kick, only for the Argentine to remove the danger, hacking the ball off the line.
Finally, the Portuguese resistance was broken with just minutes remaining. Gomez sent a low ball across the face of goal, and Llorente stuck out a leg to prod the ball into the net, via the post.
In the wake of the goal, Sporting sent the ball long in an effort to steal a place in the final, but it was to no avail: it was Bilbao's night, and they can now look forward to an all-Spanish final in Romania next month.