You have three reasonable cost options:
1) Train
There are about 16 services per day from Lisbon Gare Oriente Station to Porto this summer.
Because the Potruguese Railways site is a bit complicated, I have made a
link on my blog where you can download the timetable:
http://barlaventostravelblog.blogspot.com/
Scroll down on the right until you come to:
Algarve & Portugal - Travel Transport Links
Click on:
Porto - Lisbon - Porto Train Timetable
Transit Time will be about 2hrs30mins to 3 hrs.
2) RENEX Coach Services
Also departs Lisbon Gare Oriente
Again go to my blog where you can download the timetable:
http://barlaventostravelblog.blogspot.com/
Scroll down on the right until you come to:
Algarve & Portugal - Travel Transport Links
Click on:
RENEX Bus Service - Lisbon to Porto timetable
Transit Time will be about 3hrs30minss.
3) Rede-Expressos
Coach Services from Sete Rios Coach Station. (Jardim Zoologico)
Web-site:
www.rede-expressos.pt
(Note: Site only works with IE5.5 above. )