Robert Lewandowski passed 50 goals for the season as Bayern Munich beat Bayer Leverkusen to win a record 20th German Cup and 13th domestic double.
David Alaba’s free-kick put them ahead and Serge Gnabry added a second, before Lewandowski’s long-range shot was fumbled in by Lukas Hradecky.
Sven Bender’s header gave Leverkusen hope but Lewandowski’s delicate dink put the result beyond doubt.
Kai Havertz scored a penalty with the last kick for Leverkusen.
Bayern Munich have set a new club record of 26 games unbeaten, only drawing once in that run since December.
Their run of 17 straight wins is also a Bayern record.
They were deserved winners at the empty Olympic Stadium in Berlin. Leverkusen had them on the ropes for about 20 minutes after making it 3-1, but Bayern saw it out.
Lewandowski’s two goals — which took the Poland international to 51 in 44 games this season for Bayern — were both brilliant.
For the first, he controlled a long Manuel Neuer kick before shooting from at least 30 yards, with the goalkeeper spilling his shot over the line.
His second, which ended Leverkusen’s hopes, was a wonderful chip over Hradecky.
Leverkusen’s reputation as Germany’s nearly men continues. They have lost a Champions League final, three German Cup finals and finished Bundesliga runners-up five times since winning their only two major trophies — the Uefa Cup in 1988 and the German Cup in 1993.
Neither side’s season is finished yet. Bayern Munich, chasing a treble, face Chelsea in the Champions League last 16 next month, after winning the first leg 3-0. Leverkusen lead Rangers 3-1 going into the Europa League last-16 second leg.