The tie, which finished 3-3 on aggregate, was a rematch of last season's final that Bayern won 1-0 in Portugal last summer.
Bayern, who were without injured striker Robert Lewandowski for both legs, had the better of play in the opening 40 minutes, but PSG created the best chances, with Neymar twice hitting the bar after beating Manuel Neuer.
However, the Germans took the lead in scrappy fashion when Eric Maxim Choupo-Moting jumped first to head home a rebound after Keylor Navas was forced into a difficult save that he deflected high into the air in the 6-yard box.
The goal meant Choupo-Moting has scored in his past three Champions League appearances for Bayern, including one in each leg against PSG, with whom he played from 2018-2020.
Neymar came agonisingly close again in the 54th minute when Angel Di Maria rolled the ball across a gaping goal mouth after some fine footwork on the right. But the PSG No. 10 couldn't get a touch despite a desperate stretch.
PSG thought they put the tie away in the 79th minute after first-leg hero Kylian Mbappe emphatically scored from a breakaway. but the France international was rightly flagged for offside after the play ended.
"Normally, my team has so much quality in the final third, but today they were lacking that final punch. We have to accept that, even though we would have liked a different outcome," said Bayern coach Hansi Flick.
Flick added that he would decide on his future at the club at the end of the season, amid speculation that he might take over for Joachim Low as Germany's men's national team coach.
PSG coach Mauricio Pochettino praised his side's fighting spirit.
"We were very focused. It was a really tough match -- I'm really happy because the players deserve big credit. To win and qualify for the semifinals is an amazing moment for us." Pochettino said.