Fredy Guarin gave the visitors a ninth-minute lead which was cancelled out by a Javier Saviola penalty eight minutes later.

But Hulk restored Porto's advantage, also from the spot, after 26 minutes and this time they held on to establish an unassailable 16-point lead with five games to go. They have won 23 and drawn two of their 25 Liga Sagres games this season.

Both sides finished with 10 men - Porto's Nicolas Otamendi seeing red after 70 minutes with home striker Oscar Cardozo following him down the tunnel 14 minutes later.

"The important thing was to come here, play well, win and win the title," said Hulk afterwards.

"Now we have to aim to finish the season undefeated while we are also fighting in the Portuguese Cup and Europa League."

Sporting Lisbon missed the chance to move third after a 1-1 draw at Guimaraes.

A Matias Fernandez penalty opened the scoring midway through the first half but Guimaraes levelled in the final minute through Joao Paulo.

Naval boosted their chances of avoiding the drop with a 3-1 win at Olhanense.

Bruno Moraes scored twice and a third came from Bolivia. Djalmir netted the hosts' sole consolation.

Naval are now just four points behind Vitoria Setubal, who were beaten 2-0 at Rio Ave, for whom Yazalde and Saulo were on target.