Serie A leaders Milan were stunned 2-0 by Spezia to give Inter the chance to leapfrog them, while Atletico Madrid went eight points clear in La Liga.
Having already beaten AS Roma in the Coppa Italia and Napoli in the league since the turn of the year, Spezia, making their Serie A debut this season, scored twice through Giulio Maggiore and Simone Bastoni, both in the second half, to seal a surprise success.
Milan never got going and finished the match without having had a shot on target, while being completely outplayed by their opponents.
Spezia saw out the win with ease to move up to 14th in the standings on 24 points, with Milan facing the prospect of losing top spot to rivals Inter Milan, should Antonio Conte's side beat Lazio on Sunday.
Lorenzo Insigne's penalty earned Napoli a 1-0 win over Juventus. Veteran defender Giorgio Chiellini was penalised for a foul on Napoli's Amir Rrahmani in the penalty area to concede a 31st-minute spot-kick, which Insigne converted to score what proved to be the winner and his 100th goal in all competitions for Napoli.
Juventus looked a shadow of their normal selves offensively in the first half but improved after the break, with Federico Chiesa denied by a fine save from Napoli goalkeeper Alex Meret.
Cristiano Ronaldo was having an off day in front of goal, missing a glorious chance with his head late on to snatch a point, with Napoli seeing out the win to move into fourth on 40 points, two behind Juventus in third.
Torino drew a fifth successive match as they were held by fellow strugglers Genoa in a 0-0 draw.
Genoa defender Davide Zappacosta almost scored against his old club but his effort came off the post. Torino are now two points above the drop zone. Genoa are 10 points clear of danger after an impressive run since coach Davide Ballardini took charge in December.
La Liga - Atletico move eight points clear
Atletico Madrid went eight points clear at the top of La Liga with victory at Granada. A heavily deflected strike from Angel Correa saw La Liga leaders Atletico Madrid snatch a 2-1 victory at Granada to get back to winning ways and move eight points clear at the top of the standings.
Marcos Llorente put Atletico in front in the 63rd minute with a low finish from the edge of the area.
But the visitors' joy was short-lived as Venezuelan midfielder Yangel Herrera equalised for Granada three minutes later following a corner, his shot flying into the net after bouncing off Llorente's trailing leg.
Atletico appeared on course to drop points for a second consecutive game after Monday's 2-2 draw at home to Celta, which would have offered Real Madrid the chance to close the gap with them to three points if they beat Valencia on Sunday.
But Atletico regained the lead in the 75th when Argentinian forward Correa tried his luck inside the box and saw his desperate attempt bounce off the foot of Granada defender Jesus Vallejo and loop over 'keeper Rui Silva into the net.
Lionel Messi scored two scorching strikes as Barcelona hammered Alaves 5-1 to warm up for their upcoming Champions League clash with Paris St Germain in style.
Portuguese forward Francisco Trincao put Barca in front after a cut-back from 18-year-old debutant midfielder Ilaix Moriba and Messi thought he had doubled the lead later on when knocking in on the rebound but the goal was ruled out for a marginal offside against Antoine Griezmann.
Messi then took matters into his own hands from outside the area and thumped the ball off the far post with such venom that it landed just inside the opposite post.
Alaves's Luis Rioja pounced on a mistake by Ilaix to reduce the deficit in the second half but Barca came roaring back with a second strike from Trincao, another long-range missile from Messi, and then a fifth goal crafted by Messi and Griezmann and finished off by left-back Junior Firpo.
Sevilla were made to suffer by basement club Huesca, but thanks to the heroics of goalkeeper Bono, they held on for a 1-0 home win, their ninth consecutive victory in all competitions.
Munir El Haddadi headed home a cross from Oliver Torres to break the deadlock for the hosts in the 57th minute but it took two outstanding saves from Bono to preserve their advantage.
The Moroccan first made a jaw-dropping save to keep out a header by Huesca forward Rafa Mir from point-blank range, while in the 89th minute he parried an effort from Sergio Gomez and then got up to prevent Mir netting on the rebound.
Elsewhere, Eibar and Real Valladolid drew 1-1 in a battle at the bottom of the table.
Bundesliga - Haaland rescues late draw for Dortmund
Borussia Dortmund's poor form continues after they were held by visiting Hoffenheim to a 2-2 draw.
Erling Haaland's 16th goal of the season salvaged the draw for Dortmund, but will do little to address questions of defensive frailties and charges of complacency among the home team.
Dortmund have won only one of their last six league games and are dropping back in the race for the Champions League places. The gap is likely to grow with Eintracht Frankfurt, Wolfsburg and Borussia Monchengladbach all playing on Sunday.
Ihlas Bebou missed two good chances for Hoffenheim before Jadon Sancho beat the offside trap at the other end to open the scoring in the 24th minute.
Munas Dabbur equalised soon after. Stefan Posch then produced a last-ditch tackle to deny Jude Bellingham before Dabbur scored on the counter-attack.
Dortmund's shaky defence always looked susceptible, so it was no surprise when Bebou scored Hoffenheim's second goal after the break. Goalkeeper Marwin Hitz punched the ball away but only as far as Bebou, who headed home.
Haaland had a goal ruled out for offside before he finally equalised in the 81st minute. There was some pushing and shoving afterwards as a Hoffenheim player was down injured when Haaland scored, but Bebou played on and Sebastian Rudy's botched back pass gave Haaland his chance.
Every game in the Bundesliga was drawn on Saturday
After two defeats, Hertha Berlin drew 1-1 at Stuttgart for their first points in three games since Pal Drdai returned as coach.
Sasa Kalajdic scored just before the break after a first half to forget from Hertha. Sami Khedira came on against his former club and crossed for fellow substitute Luca Netz to score the equaliser in the 82nd minute. The 17-year-old defender became Hertha's youngest goalscorer in the Bundesliga.
Mainz also scored two late goals at Bayer Leverkusen to draw 2-2, and Freiburg played out a goalless draw at Werder Bremen. Loris Karius making a late save in his first start for Union Berlin to preserve a 0-0 draw against Schalke.
Ligue 1 - PSG back top after win
Paris Saint-Germain geared up for their Champions League trip to Barcelona with a 2-1 home win against Nice that sent them provisionally top of the Ligue 1 standings.
Moise Kean netted the winner after Rony Lopes' 50th-minute goal had cancelled out Julian Draxler's opener for PSG in the first half.
PSG were without three key players with Neymar and Angel Di Maria injured while Marco Verratti was nursing a knock he sustained in a 1-0 Coupe de France win at Caen on Wednesday.
The Italian was replaced by Draxler, who lived up to the task as he drove the ball home from close range after Mauro Icardi's attempt had bounced off the post into his path in the 22nd minute.
Nice, however, stepped up a gear after the break and Lopes equalised with a powerful shot under the crossbar following a rare poor clearance by Marquinhos.
Kean then scored the winner in the 76th minute, heading home from point-blank range to give PSG all three points after Icardi had stretched in the air to deflect Kylian Mbappe's cross. It was Kean's 10th goal in 17 league games.
The French champions are on 54 points and lead Lille, who host Brest on Sunday, on goal difference with Lyon in third place on 52 points. The result left Nice in 13th place with 29 points.
Elsewhere, Reims and Lens played out a 1-1 draw.