James Rodriguez scored a sumptuous 83rd-minute winner as FC Porto moved to the top of Group A following a 1-0 win over Paris Saint-Germain.
Porto bossed PSG from the start, pressed high and controlled most of possession, relegating the Ligue 1 runners-up to occasional counter attacks.
Although Rodriguez's goal came late, there were plenty of chances for both sides. Porto could have gone ahead earlier through busy midfielder Joao Moutinho and Rodriguez, who both missed several chances.
"This was an important goal, I tried to score over and over again. Now we are favourites to go through but we have to do it step by step," the 21-year old Rodriguez told Portuguese radio.
PSG striker Zlatan Ibrahimovic, who turned 31 on Wednesday, also had two excellent chances of his own, which he wasted.
The Swede headed wide from playmaker Nene's cross. Then, after pulling clear of Porto's back four and with acres of space, he tried to lob the keeper with a neat first-touch back heel but a stretching Helton palmed the ball behind.
"Sure, we gave away a chance here and there but that's natural when playing against a good team like PSG," said Porto coach Vitor Pereira. "We passed the ball around, set the match's tempo and created plenty of chances with a lot of quality in attack and consistency at the back."
Porto and Portugal midfielder Moutinho should have scored after just four minutes but blasted wide with the goal at his mercy after PSG's defence gave the ball away cheaply.
The home side kept pressing in the second half and winger Varela wasted an easy chance after 60 minutes, denied by onrushing PSG keeper Salvatore Sirigu when put through on goal from a Moutinho pass.
Porto looked set for a disappointing stalemate until Rodriguez's breakthrough gave them a deserved win over the other group favourites.
"James's (Rodriguez) goal brought justice to the scoreline," Pereira said.
In the other Group A match, Dynamo Kiev beat Dinamo Zagreb 2-0 to go level on three points with PSG.
MAN OF THE MATCH
Salvatore Sirigu - PSG: The Italian keeper kept his side in the match but could not do anything to stop that wonderful James Rodríguez strike.
FC Porto: Helton 7, Danilo 7, Lucho González 7, Maicon 7, João Moutinho 8, Jackson Martinez 7, James Rodríguez 8, Varela 7, Fernando 6, Sandro 6, Otamendi 6. Subs: Mangala 5, Atsu 6, Defour6.
Paris Saint-Germain FC: Sirigu 9, Thiago Silva 6, Sakho 6, Ménez 6, Nene 6, Matuidi 6, Maxwell 6, Ibrahimović 6, Chantôme 6, Van der Wiel 5, Verratti 5. Subs: Lavezzi 3, Jallet 5, Pastore 5.
- James Rodriguez
- Joao Moutinho
- FC Porto