De Braziliaanse aanvaller Pepe bracht Porto op voorsprong, maar de Portugese spelers Joao Cancelo en Joao Felix van Barcelona maakten beide een doelpunt waardoor de wedstrijd kantelde.
Dankzij het voormalige Benfica-duo werd het team van Xavi Hernandez gespaard van een gênant afscheid in de groepsfase, iets wat hen de laatste twee seizoenen wel overkwam.
De angst voor Barca, vergroot door slechte nationale prestaties en een verlies tegen Shakhtar Donetsk, werd snel weggenomen door Cancelo die de score gelijktrok en Felix hielp met het scoren van het winnende doelpunt.
Cancelo verklaarde de overwinning als een finale en benadrukte de noodzaak van zelfvertrouwen.
Xavi voerde wijzigingen door na het recente gelijkspel tegen Rayo Vallecano, met Cancelo op linksback en Ilkay Gundogan in plaats van Oriol Romeu.
Doelman Inaki Pena bleef in het doel voor Barcelona, terwijl Marc-Andre ter Stegen afwezig was door rugpijn.
Pepe, 40 jaar oud, werd uitgefloten door Barca-fans vanwege zijn Real Madrid-verleden en is nu de vijfde oudste speler in de Champions League-historie.
Pepe blokkeerde eerst een schot van Felix, en na een afgekeurd doelpunt van Porto’s Medhi Taremi, scoorde de Braziliaanse speler uiteindelijk na een rebound.
Cancelo maakte daarna gelijk en zorgde ervoor dat Barcelona niet in de paniekmodus ging. Hij maakte een individuele actie en schoot zelfverzekerd langs Porto-keeper Costa.
Het spel ging heen en weer met kansen aan beide kanten, en Felix scoorde uiteindelijk het tweede doelpunt voor Barcelona, na een geweldige combinatie met Cancelo.
Hoewel Barcelona er niet in slaagde om de voorsprong verder uit te breiden, wisten ze de overwinning veilig te stellen.
De verdediger van Barcelona, Ronald Araujo, toonde na het laatste fluitsignaal een grote opluchting.
Cancelo verliet vroegtijdig het veld uit voorzorg, maar verklaarde fit te zijn voor de komende wedstrijd tegen Atletico Madrid.
Porto, nu gelijk in punten met Shakhtar op de tweede plaats, moet winnen in hun laatste groepswedstrijd op 13 december tegen Shakhtar in Portugal.