Train is not an option as you would have to travel from Granada to Madrid and then overnight to Coimbra in Portugal and then by train to Porto.
Long Distance Bus Operator www.alsa.es offer a service as follows:
Depart GRANADA: 20:30
Arrive PORTO 11:00 next day.
Change Bus in Seville and Lisbon.
Price: Euro 77,00