BERLIN - Flawless Bayern Munich struck twice in three minutes to beat Schalke 04 2-0 on Saturday and stay top of the Bundesliga with four wins from four as rivals Borussia Dortmund lost 3-2 at Hamburg SV to end a 31-match unbeaten run. Visitors Bayern, fresh from their opening 2-1 Champions League win over Valencia on Wednesday, took the lead in the 55th minute when in-form Toni Kroos - set up by Thomas Mueller - curled a low shot from 14 metres past keeper Lars Unnerstall. Mueller then scored the second goal himself, threading the ball through the legs of defender Christian Fuchs on the right and slipping a shot between two others for his fourth goal of the season to silence the 61,000 crowd at the Auf Schalke Arena. Bayern, who were without injured Franck Ribery, have now won all games in every competition so far this season and are on 12 points along with promoted Eintracht Frankfurt who beat Nuremberg 2-1 on Friday. "We saw a very intense match from both teams and Schalke stood up very well especially in the first half," said Bayern coach Jupp Heynckes. "We showed our class in the second half, dominated and deserved to win. "It is good news that we have opened up a five-point lead (over Dortmund) but the championship is a long marathon of 34 games," he said. Schalke, who showed none of the attacking flair that earned them a 2-1 win at Olympiakos in their midweek Champions League group match, imploded following the quickfire goals and failed to threaten the Bayern goal. Champions Dortmund are five points behind, after Hamburg battled to victory with two goals from South Korea's Son Heung-min. The hosts needed just two minutes to score when Rafael van der Vaart was given far too much space on the left to cross and Son beat Mats Hummels to head in his second goal of the season. Dortmund instantly took control, launching a barrage of attacks until halftime but neither Marco Reus nor Robert Lewandowski could beat keeper Rene Adler. Ivan Perisic did it better, lobbing in the equaliser from the left 21 seconds after the restart. In a frantic five minute spell, however, the hosts struck twice through Ivo Ilicevic and Son before Croat Perisic cut the deficit on the hour. Dortmund are on seven points along with fellow Champions League competitors Schalke while Hamburg, who hold the record for the longest unbeaten run of 36 league games from 1983, managed to lift themselves off the bottom after three straight defeats.