Bundesliga champions Bayern Munich kept their hopes of a treble alive after beating Bayer Leverkusen 4-2 at the Olympiastadion in Berlin to win the German Cup for the 20th time.

David Alaba gave Bayern the lead with a free-kick in the 16th minute after Robert Lewandowski was fouled on the edge of the box, with the defender's effort sailing over the wall and beating the outstretched arm of Lukas Hradecky in goal.

Bayern doubled the lead when Joshua Kimmich released Serge Gnabry down the right channel and the winger's uncontested shot nestled into the bottom corner for the 24-year-old's 20th goal of the season in all competitions.

Lewandowski made it 3-0 when he let fly a thunderous strike straight at Hradecky and the Finnish goalkeeper fumbled, allowing the ball to creep over the line to give the Polish striker his 50th goal of the season.

Leverkusen opened their account four minutes later when Sven Bender headed home at the far post from a corner but it was too little, too late as Lewandowski grabbed a second with a chip over the keeper in the 89th minute.

There was late drama when VAR spotted a handball in the box in stoppage time to award Leverkusen a penalty.

Kai Havertz's consolation strike into the top corner proved to be the final kick of the game as Bayern defended their title.

They will now hope to go on and make it a treble by winning the Champions League in August. They lead Chelsea 3-0 after the first leg of their last-16 tie.

Juventus took another step towards a ninth consecutive Serie A title as they overpowered Torino 4-1 in the Turin derby.

Paulo Dybala and Juan Cuadrado put Juve 2-0 up inside the opening half-hour and Cristiano Ronaldo made victory safe with a free-kick after Andrea Belotti pulled one back from the penalty spot.

A late Koffi Djidji own goal added gloss to the scoreline on the night veteran goalkeeper Gianluigi Buffon made a record 648th Serie A appearance.

Lecce's relegation fears increased as they were beaten 4-2 at mid-table Sassuolo.

Late goals from Jeremie Boga and Mert Mulder won it for Sassuolo after Lecce had twice come from behind with strikes from Fabio Lucioni and Marco Mancosu cancelling out efforts from Francesco Caputo and Domenico Beradi.

In Spain, Valladolid claimed their first win in six La Liga games as a late goal from Joaquin earned a 1-0 victory over Alaves. Joaquin struck following a set-piece two minutes from time, lifting his side 10 points clear of the relegation zone.