The visitors led at the interval courtesy of a strike from Inaki Williams, but Luis Suarez levelled the scores early in the second period, before Gerard Pique and Neymar registered late on, allowing the Catalan side to advance 5-2 on aggregate courtesy of their 2-1 victory in the first leg last week.
Barcelona had the ball in the back of the net in the ninth minute when Thomas Vermaelen headed an Ivan Rakitic corner past Iago Herrerin from inside the box, but the referee spotted a foul on Mikel Rico and blew his whistle.
It was Bilbao that took the lead on the night in the 12th minute, however, when Williams collected a super through pass from Aritz Aduriz before rounding Marc-Andre ter Stegen and finding the back of the net.
The visitors should have scored a second just three minutes later when Williams set up Javier Eraso inside the box, but the youngster could only turn his effort wide of Ter Stegen's post. Markel Susaeta was next to come close for Bilbao in the 22nd minute, but the Spaniard blasted high of the goal from close range.
Barcelona, who had a patched-up defence and midfield, just could not get going in the first period and Williams again tried his luck from distance in the 30th minute, only to miss the crossbar during a period where Bilbao were in full control.
The home side had a penalty shout 10 minutes before the break when Aymeric Laporte bundled Neymar to the ground, but the referee, who was in a good position, simply shook his head. The same players clashed inside the Bilbao box barely one minute later, but it brought the same outcome, much to the frustration of the Barcelona bench.
Bilbao were a touch fortunate to keep all 11 men on the pitch in the latter stages of the first period when Mikel Balenziaga brought Neymar to the deck with a last-man challenge, with the referee only issuing a yellow card.
Neymar was comfortably Barcelona's biggest threat in the opening 45 minutes, but the Brazil captain could not beat Herrerin with a couple of attempts as Bilbao entered the break with a 1-0 lead in the second leg.
Barcelona were much improved in the early stages of the second period, however, and deservedly levelled the scores in the 53rd minute when Messi collected a pass from Sergi Roberto before squaring for Suarez, who could not miss at the far post.
Bilbao continued to struggle as the hour mark approached and were forced to survive dangerous moments involving Messi and Suarez to keep their hopes alive with 30 minutes of normal time remaining.
It took the visitors until just past the hour to create their first chance of the second period, but Sabin Merino's close-range strike was blocked after smart work from Williams.
Barcelona remained the dominant team as the half continued to gather pace, with Pique and Neymar coming close to making it 2-1 on the night either side of the 70-minute mark.
Neymar and Roberto both brought fine stops from Herrerin as the game headed for the final 10 minutes, before the Bilbao stopper kept out a close-range header from Pique. Barcelona's centre-back was not to be denied, however, and headed home a Dani Alves cross at the far post in the 81st minute to send the hosts 2-1 ahead on the night.
There were more chances at both ends in the final 10 minutes and indeed time for one more goal - Neymar firing one into the top corner to complete what was an excellent second-half performance from Barcelona.