If the offers provided by buses do not suit your needs, trains and carpooling could represent a good alternative for this distance.
When the journey is so long, the bus takes much longer than other transportation. You can have a look at flights to Porto: by booking in advance you can find very cheap tickets!
When do the first and last buses from Barcelona to Porto leave?
The average duration of the journey is 21 hours and 10 minutes, but the fastest bus connections get you to Porto in 20 hours and 15 minutes. The first bus is scheduled at 01:04 and the last one at 23:04.
By bus from Barcelona to Porto: which companies offer the service?
Among the several partners of virail, you can also find Aratesa, offering buses from Barcelona to Porto.