Brazilian pair fire Porto past Shakhtar
Porto hit the woodwork twice in the first 10 minutes, with the powerful Hulk sending a deflected shot against the bar and then firing a ninth-minute penalty against the post after Kleber was brought down by central defender Yaroslav Rakitskyi.
"We were not lucky but reacted well... stayed calm and waited for the right moment," Porto coach Vitor Pereira said.
"Shakhtar were a high quality opponent but we controlled the game completely," he added.
The Ukrainians also started confidently and went ahead after 12 minutes when striker Luiz Adriano, another of the numerous Brazilians on display, pounced on a loose ball after Porto keeper Helton fumbled a tame shot by Willian.
Hulk made up for his earlier misses with a thunderous free kick from 40 yards in the 28th minute that Oleksandr Rybka touched but could not keep out his net.
"No one was expecting that shot because it was from quite far away but I saw the keeper left a bit of space open. It's something we practice during the week, a set piece can decide a match," the Brazil forward said.
Shakhtar's Yaroslav Rakitskiy was dismissed in the 40th minute for a fierce tackle on Joao Moutinho and Porto piled on the misery six minutes after the break.
Winger James Rodriguez made a great run on the left, leaving substitute Olexandr Kucher standing with a classy dribble and then picked out Kleber to tap in on his Champions League debut.
Rodriguez almost scored himself after 65 minutes, forcing the Shakhtar keeper into a smart save with a left-footed strike.
The Portuguese champions pushed forward for a third and came close when the Colombian winger dipped a free-kick onto the bar after a foul on substitute winger Djalma which earned defender Dmytro Chygrynskiy a red card in the 80th minute.
"We played a good match, managed to keep the ball and it was balanced but two of our players were sent off and the game became complicated for us," Shakthar's Luiz Adriano said.