Bayern blew away their visitors inside the first 30 minutes, with Robert Lewandowski scoring twice and setting up a headed goal for Thiago in between.
Holger Badstuber, on loan at Schalke from Bayern, was sent off for two quick-fire yellow cards in a mostly uneventful second half, as Bayern joined Eintracht Frankfurt and Borussia Mönchengladbach in the last four.
Daunting task for Schalke
The holders were looking book a record eighth-consecutive semi-final, and were in fine form after beating Hamburger SV 8-0 in the Bundesliga on Saturday.
They made three changes for this game. Philipp Lahm, Thomas Müller and Douglas Costa made way for Rafinha, Xavi Alonso and Franck Ribéry. David Alaba was a doubt with a knock but was in the starting eleven.
The same can be said of Sead Kolasinac, who shook off a muscle problem to start. Schalke made only one change from their 1-1 draw with TSG 1899 Hoffenheim, with Max Meyer replacing Daniel Caligiuri.
They hadn’t beaten Bayern in 13 meetings, with their last victory against the 18-time Pokal winners coming almost six years ago to the day, when they won the semi-final at the Allianz Arena on their way to their own most recent Pokal victory.
Bayern blow the Royal Blues away
However they got off to the worst possible start here, as inside 140 seconds Lewandowski put Bayern ahead. With Benedikt Höwedes out of position, Ribéry played an excellent through ball into the gap and Lewandowski pounced, placing it over Ralf Fährmann.
Arturo Vidal and Arjen Robben both struck over soon after, and Schalke barely had a look-in before Bayern made it two. Fährmann managed to force Lewandowski wide in the box after he was set up again by Ribéry, but the Pole simply crossed the ball in and Thiago popped up to head it in.
Schalke were able to offer some response, with Leon Goretzka, found by Kolasinac, coming close with a good strike just wide of the right-hand post.
Bayern remained completely on top though and led 3-0 with under just half-an-hour gone. Lewandowski and Ribery exchanged passes, and Lewandowski placed it in from just inside the box. Fortunately for the visitors, it didn’t get any worse before half-time.
Badstuber’s homecoming ends with a bitter taste
Juan Bernat came on for Mats Hummels at half-time, although the defender almost made an immediate impression at the opposite end of the pitch. Set up by Ribéry, he charged into the box, but Fährmann made the save and Höwedes cleared.
The second half however proved the proverbial damp squid, with Schalke beaten and Bayern happy to take their feet off the gas. Most of the attempts on goal proved little trouble for either goalkeeper, with Vidal and Goretzka well off target from either end.
With just under 15 minutes left, Schalke were reduced to ten men as Badstuber saw two yellow cards in three minutes. The first was for pulling at Robben’s shirt on the edge of the box, and the second when he went hard into Javi Martínez. An expression of frustration for a man used to being on the other end of these drubbings.
Schalke had two very poor attempts on goal in the last few minutes, with Eric Maxim Choupo-Moting essentially passing it to Manuel Neuer and substitute Caligiuri slipping as he shot well wide.
Robben felt he might have had a penalty for a largely non-existent foul from Thilo Kehrer, but the whistle blew for full-time moments after to confirm Bayern's victory.