Juventus boosted their hopes of qualifying for the Champions League as they beat Inter Milan 3-2 with a late penalty from Juan Cuadrado.
Cristiano Ronaldo put Juve ahead against the Serie A champions in the 24th minute, knocking in a rebound after his spot-kick had been saved by Samir Handanovic, before Romelu Lukaku converted a penalty at the other end 11 minutes later.
Cuadrado's shot deflected in off Christian Eriksen to give the Bianconeri a 2-1 half-time lead.
Rodrigo Bentancur was sent off for a second caution just 10 minutes into the second half.
But Inter drew level as an own goal from Giorgio Chiellini made it 2-2 with seven minutes left. The referee initially disallowed it for what he thought was a foul on the Juve defender only to overturn his decision having consulted VAR.
But there was more late drama when Ivan Perisic tripped Cuadrado in the penalty area and, with Ronaldo having been substituted, the Colombian converted from the spot.
Inter also finished with 10 men after Marcelo Brozovic picked up a second yellow card in stoppage time.
Juve are fourth, two points ahead of Napoli, who travel to Fiorentina on Sunday.
Second-placed Atalanta made sure of their place in the Champions League again next season with a 4-3 win at Genoa.
Roma beat Lazio 2-0 with goals from Henrikh Mkhitaryan and Pedro to enjoy a first Derby della Capitale win since September 2018.
M'Bala Nzola scored twice as Spezia beat relegation rivals Torino 4-1 to secure their top-flight status again.
In the Bundesliga, Robert Lewandowski scored his 40th league goal to equal Gerd Muller's long-standing record in the 2-2 draw at Freiburg.
Poland forward Lewandowski scored a first-half penalty to move level with the mark set by Muller in 1972.
Freiburg, though, soon equalised through defender Manuel Gulde.
Leroy Sane put the champions ahead again early in the second half, only for Christian Gunter to secure a point with just nine minutes left.
Eintracht Frankfurt slipped to a 4-3 defeat at bottom club Schalke, which dented their hopes of a top-four finish.
American striker Matthew Hoppe capped an impressive display with Schalke's fourth just after the hour, as goals in each half from Andre Silva were not enough for Frankfurt, who are a point behind Borussia Dortmund having played a match more.
Bayer Leverkusen made sure of Europa League qualification with a 1-1 draw at home against Union Berlin, who are themselves on the verge of securing a place in the new Europa Conference League.
Stuttgart won 2-1 at Borussia Monchengladbach with two goals in the space of five second-half minutes from Wataru Endo and Sasa Kalajdzic to take their own European hopes into the final round of fixtures.
Augsburg beat relegation-threatened Werder Bremen 2-0 to secure their Bundesliga status for another season, both sides finishing the game with 10 men.
Arminia Bielefeld's 1-1 draw with Hoffenheim left them a point above the drop zone, while it finished goalless between Hertha Berlin and strugglers Cologne at the Olympiastadion.