A goal from Hulk sent Porto ahead in a match featuring ten Brazilian players, before a Razvan Rat own-goal sealed Shakhtar’s fate.
Porto retain hopes of qualifying for the next stage, but must overcome Zenit St-Petersburg to move on to the second phase.