Serie A leaders Juventus suffered a shock 2-1 defeat at Verona as the battle for the scudetto took another twist.
Douglas Costa saw an early effort rattle the crossbar before the hosts unbeaten in seven league games had a goal ruled out by VAR for offside after Marash Kumbullas glancing header from a free-kick.
Cristiano Ronaldo struck the post late in the first half and then broke the deadlock following a swift counter attack on 65 minutes.
Verona, though, were level with 15 minutes left when Fabio Borini latched onto an error from Miralem Pjanic and produced a cool, angled finish.
FT | | Full-time in Verona. #VeronaJuve#FinoAllaFine#ForzaJuvepic.twitter.com/b6uTu8s1tX
JuventusFC (@juventusfcen) February 8, 2020
The home fans were screaming for a penalty after Leonardo Bonucci deflected a header from Marash Kumbulla onto the crossbar with a raised arm.
The referee reviewed the incident on the pitchside monitor, and awarded a spot-kick, which substitute Giampaolo Pazzini crashed past Wojciech Szczesny to cause an upset.
Inter could now go level on points with Juventus at the top of the table if they win the Milan derby on Sunday, while Lazio can also close to within a point.
Earlier, Atalanta had consolidated their place in the top four after coming from behind to win 2-1 at Fiorentina, while Torino started life under new boss Moreno Longo with a 3-1 home defeat to Sampdoria and finished the match with 10 men.
Why, oh why did it have to end #B04BVB 4-3 pic.twitter.com/vfwlFTvjbx
Bundesliga English (@Bundesliga_EN) February 8, 2020
Bayer Leverkusen ended Borussia Dortmunds Bundesliga charge with two late goals to seal a thrilling 4-3 win at the BayArena.
Dortmund driven on by January signing Erling Braut Haland had been out to further close the gap on the top two as they went in search of a fourth straight league win following their midweek DFB-Pokal cup defeat at Werder Bremen.
Kevin Volland gave Leverkusen the lead after 20 minutes, which was soon cancelled out when Mats Hummels headed from a corner.
Midfielder Emre Can, playing against one of his former clubs, put Dortmund in front with a fine curling effort after 33 minutes, but Volland levelled at 2-2 just before half-time.
No words needed!
4:3 | #B04BVB | #StärkeBayerpic.twitter.com/EawUElYmlK
Bayer 04 Leverkusen (@bayer04fussball) February 8, 2020
Raphael Guerreiro added a third for the visitors on 65 minutes but Leverkusen finished strongly as substitute Leon Bailey (81) slotted in before a towering header from captain Lars Bender (82) sealed a memorable win.
Elsewhere, Mainz bolstered their survival hopes with a 3-1 win at Hertha Berlin, where Robin Quaison scored a hat-trick to end a four-match losing run.
Klaus Gjasulas late goal saw bottom club Paderborn pick up a point after a 1-1 draw at Schalke, Werder Bremens problems continued with a 2-0 home defeat by Union Berlin and Luca Waldschmidts penalty just before half-time was enough to give Freiburg a 1-0 home win over Hoffenheim.
Wolfsburg saw defender Marin Pongracic sent off early in the second half, but battled to a 1-1 draw against strugglers Dusseldorf, who are 16th and four points from safety.
In LaLiga, Getafe strengthened their push for Champions League qualification with a 3-0 win over Valencia.
3 Goals 3 Points
3 is a lucky number for @GetafeCF!
Check out the highlights from #GetafeValencia! pic.twitter.com/9pY91oIWjf
LaLiga English (@LaLigaEN) February 8, 2020
Jorge Molina broke the deadlock just before the hour and then added a well-taken individual effort on 67 minutes.
Valencia had defender Alessandro Florenzi sent off with 12 minutes left for a late tackle, and Jaime Mata scored Getafes third on the break in the closing stages.
In Saturdays late kick-off, Angel Correas early goal was enough to give Atletico Madrid a 1-0 home win over v Granada.
Valladolid and Villarreal drew 1-1 and Levante beat strugglers Leganes 2-0 with first-half goals from Ruben Rochina and Roger.
90+3′ And the wins keep on coming!
A @dimpayet17 moment of MAGIC seals the three points against @ToulouseFC#OMTFC | 1-0 | pic.twitter.com/kAwR7svl3f
Olympique Marseille (@OM_English) February 8, 2020
In Ligue 1, Dimitri Payets fine 25-yard strike early in the second half gave Marseille a 1-0 win over bottom club Toulouse.
Rennes, though, lost ground in the chase for second place after being held to a 0-0 draw at home by Brest.
At the other end of table, strugglers Amiens lost 2-1 at home against Monaco, who scored twice in the last five minutes through Wissam Ben Yedder and Islam Slimani.
Dijon thought they had picked up a crucial win after a late goal from Stephy Mavidi but Nantes snatched a dramatic 3-3 draw when Andrei Girotto looped in a header from a free-kick deep into stoppage-time.
Bordeaux came from behind win 2-1 at Metz and Nice went down 3-1 at home to Nimes.