Dortmund 1-1 PSG - Highlights
Paris Saint-Germain scraped into the Champions League last 16 on Wednesday after a 1-1 draw at Borussia Dortmund as Newcastle lost to AC Milan in the group's other game.
In danger of a first group-stage exit since the Qatari takeover in 2011, PSG came from a goal down to earn the point that sent them through as Group F runners-up.
Dortmund secured top spot with Milan third, behind PSG on head-to-head goal difference, and Newcastle finishing bottom.
Karim Adeyemi gave Dortmund the lead early in the second half, but teenager Warren Zaire-Emery equalised as PSG reached the knockout phase for the 12th season in a row.
Kylian Mbappe had the ball in the net late on, but VAR showed the France striker was narrowly offside.
"We're happy but we know we could have done better," Zaire-Emery told broadcaster Canal Plus.
"First place was the objective, but we're happy to have finished second in the end. We played well, but football is like that at times, sometimes the ball just doesn't want to go in."
Despite the result, PSG's timid showing against an inconsistent Dortmund means Luis Enrique's side have plenty to do if they wish to go much further on the European stage.
By finishing first Dortmund will avoid several of the competition favourites including holders Manchester City and Real Madrid in the last 16.
- 'A wild game' -
The sides miraculously failed to score in a blistering first half, with both missing several massive chances.
Dortmund knew they would top the group by avoiding defeat, but Edin Terzic's men roamed forward, creating several chances but also leaving space for PSG's speedy attackers.
"It was a wild game which could have gone either way," Dortmund's Marco Reus told DAZN.
"Unfortunately we didn't do enough to win, but a draw is OK."
Reus and Marius Wolf went close early for the hosts until PSG roared to life, pinning Dortmund on the ropes but somehow failing to land a telling blow.
Lee Kang-in missed with the goal begging after just a quarter of an hour and Mbappe went even closer just a minute later.
The 2018 World Cup winner rounded Gregor Kobel and shot goalwards before a sliding Niklas Suele cleared the ball centimetres from the line.
PSG winger Bradley Barcola then curled against the post, before Randal Kolo Muani poked an effort when clean through on goal which dribbled agonisingly wide.
Dortmund then missed some golden chances of their own, with visiting goalkeeper Gianluigi Donnarumma tipping away a fierce Reus drive before Adeyemi blasted off target after the Italian stopper had parried Salih Ozcan's shot.
PSG forward Kolo Muani went close again but was denied by the legs of Dortmund goalkeeper Kobel.
With news filtering through of Newcastle's lead at half-time, PSG ramped up their pursuit of the opening goal with Mats Hummels putting his body on the line to deny Mbappe early.
The home side would however strike first, Niclas Fuellkrug laying on a splendid pass for Adeyemi to roll in the opener.
With PSG staring at elimination Mbappe put the team on his back, dribbling down the left flank and shedding his marker, his squared ball deflected out to Zaire-Emery, who advanced towards goal before blasting home.
Mbappe looked to have booked PSG's ticket to the knockout phase, scoring with just over 10 minutes remaining, but the strike was chalked off by VAR for offside.
However, a point proved to be enough for the French champions, as Newcastle lost 2-1 to Milan at St James' Park when a victory for the Magpies would have taken them through at PSG's expense.