Needing a 2-0 win, Bayern were level on aggregate within 22 minutes thanks to Thiago and Jerome Boateng headers.
Robert Lewandowksi put them further ahead and Thomas Muller drove home for 4-0 before Lewandowski added a second.
Jackson Martinez gave Porto some hope, but Ivan Marcano was sent off, with Xabi Alonso scoring from the free-kick.
The result was a boost to the reputation of Bayern boss Pep Guardiola, who was in danger of suffering a Champions League humbling for a second consecutive season.
Since the Spaniard took over the reigning European champions from Jupp Heynckes in 2013, they have dominated in the Bundesliga, losing only four of 63 games.
But they were beaten 5-0 on aggregate by Real Madrid in last year’s semi-finals and looked like they might struggle even to reach that stage this time following a 3-1 first-leg defeat in Portugal.
Guardiola had reached the Champions League semi-finals in all five seasons as a manager of Barcelona and the German club.
And Bayern – chasing a second treble in three years – were confident of making it six. Captain Philipp Lahm was “utterly convinced” the Bavarians would qualify, although Muller warned “everyone just piling forward would be suicide”.
But, in effect, that is exactly what they did.
Bayern attacked from the first whistle and Lewandowski had hit the post before Thiago headed home Juan Bernat’s cross to open the scoring within 14 minutes.
BBC sport
Maher Taki