Porto were inches from taking the lead in the early stages when Jackson Martinez was offered too much space in the box to volley a cross against the crossbar.
Raul Garcia opened the scoring in the 14th minute as he created some space inside the penalty area with a clever piece of skill before firing an effort in off the crossbar from a tight angle.
Porto, who need a win to stand any chance of qualifying for the knockout stages, were denied again by the frame of the goal when Silvestre Varela headed against the bar.
The visitors were gifted a great opportunity to level the scores when Daniel Aranzubia was adjudged to have fouled Martinez after rushing off his line to challenge the forward.
However, Aranzubia made up for the mistake just moments later as he saved Josue's penalty.
Martinez was frustrated by the woodwork once again just before the interval as his deflected effort clipped the post before rolling wide.
Diego Costa doubled his team's lead by sprinting clear of the visiting defence before beating Helton and tapping the ball home.