An embarrassing moment from the Brazilian goalkeeper allowed Ezequiel Lavezzi to steal all three points for the Ligue 1 side, who consequently pip their visitors to first place
The Ligue 1 side raced out of the blocks in the early exchanges before taking the lead thanks to Thiago Silva's powerful header. The Portuguese giants would soon equalise after a defensive lapse allowed Jackson Martinez to restore parity.
However, the visitors would be undone by an error from their own goalkeeper, Helton, who embarrassingly let Ezequiel Lavezzi's weak effort squirm past him. Zlatan Ibrahimovic would later miss from six yards out, though the hosts held on to progress as group winners.
Carlo Ancelotti restored the likes of Javier Pastore to the starting line-up, and the Argentine produced a fine assist for Ibrahimovic, who narrowly sliced his effort wide after just two minutes, as les Parisiens aimed to rebound from their poor form in Ligue 1 of late.
The hosts were rather more aggressive in their approach play in the opening stages, with Ibrahimovic and Gregory Van der Wiel somehow escaping yellow cards after rash challenges, before Lavezzi's angled shot was deflected over during a period of domination for the French side.
Nevertheless, Vitor Pereira's side were patient as they searched for an opener. Martinez, who excelled in the side's reverse fixture against PSG on matchday two, spurned a decent chance after his opportunistic shot was blocked by a last-ditch challenge from Thiago Silva.
Les Parisiens appeared more resolute than the side that lost meekly to Nice in Ligue 1 on Saturday, as the capital club continued testing Helton in the Porto goal. First, Alex's header from a corner was well saved by the goalkeeper before Ibrahimovic only just failed to connect with a well-worked Van der Wiel corner, as Porto remained defiant under pressure.
The Portuguese side would finally crack just before the half-hour mark, though. Nicolas Otamendi's ill-timed tackle on Jeremy Menez earned him a booking, but the ramifications for his side would be far greater as Thiago Silva rose magnificiently to thump home a powerful header in off the crossbar for the game's opening goal.
However, the lead would only last four minutes. Porto raced through on a counterattack, led by right-back Danilo, whose fantastic cross was met by Martinez. The Colombia international, who had ghosted past the static Alex, made no mistake with his header, prompting heavy boos from the majority of those packed inside the Parc des Princes.
The second half began with much of the same vigour from the French side, as Menez surged through from the left-flank, cutting past a diving Otamendi and Eliaquim Mangala before seeing his low effort well blocked by Hilton.
For all of Porto's enterprising resistance, they would fall behind once more, this time to a calamitous error from goalkeeper Helton. Lavezzi held off his marker but could only discharge a tame shot which should have been easily dealt with. However, Helton inexplicably allowed the ball to cross the line, thus handing the hosts the advantage again, on 61 minutes.
Pereira's men issued a response, but a glaring chance would subsequently be spurned. Martinez was found in open space before his chip was denied by an onrushing Sirigu. Former Marseille midfielder Lucho Gonzalez should have buried the rebound but he inexplicably failed to hit the target.
Late on, the French side's profligate finishing was evident once more as Pastore's fierce strike was spilled by Helton, before Ibrahimovic flashed the ball hopelessly wide, though it didn't matter as Ancelotti's men held on for victory.
Porto's defeat means they lose back-to-back competitive fixtures for the first time since 2009, and finish the group stage in second position. Paris Saint-Germain will enter the last 16 draw as group winners, thus avoiding the likes of Barcelona and Borussia Dortmund.