Barcelona will be the 2018/19 La Liga champions, unless something dramatic happens in the last 7 games of the season.
The Bulgranas moved closer to this year’s crown, a ninth in 11 seasons, as they dispatched second placed Atletico 2-0 at the Camp Nou.
After the visitors striker Diego Costa was sent off in the first half, Barcelona scored two late goals to seal a 22nd league victory of the season.
Luis Suarez scored the first goal on 85 minutes before Messi scored his 33rd of the campaign a minute later.
Victory sees Barcelona move to 73 points, 11 ahead of Atletico with only 7 games to play.
In Madrid, Real had to come from a goal down to defeat hard fighting Eibar 2-1 at the Santiago Bernabeu.
Marc Cardona put the visitors in front on 39 minutes, a lead they held until halftime.
In the second half, Karim Benzema took the initiative, scoring twice to win the game for Zinedin Zidane’s side. First the French striker struck on 59 minutes before sealing victory 9 minutes from time.
The result means Real (60) are now two points behind second placed Atletico, with 7 games to play.
In the battle for the remaining Champions League spot, Getafe and Sevilla won, Valencia lost while Alaves drew.
In their games, Getafe defeated Bilbao 1-0, Sevilla were 2-0 winners away to Real Valladolid, Valencia were beaten 2-0 by Rayo Vallecano while Alaves were held to a 1-1 draw at home to Leganes.
Elsewhere, only Espanyol, Celta Vigo and Betis won their respective fixtures. Espanyol defeated Girona 2-1, Celta were 3-1 winners at home to Real Sociedad while Betis overcame troubled Villarreal 2-1 at the Abanca Balaidos.
In the Serie A, Juventus moved 20 points clear at the top of the League thanks to a 2-1 victory at home to AC Milan.
Milan took the lead on 39 minutes through striker Krzysztof Pitek but Juve leveled matters from a penalty which was converted by Paulo Dybala on the hour mark.
With the game headed for a draw, up stepped teenage sensation Moise Kean who scored the winner with six minutes from time.
The win sees Juve move onto 84 points, 20 clear of second placed Napoli, with 7 games to play.
For Napoli, they were held to a 1-1 draw at home to 10-man Genoa on Sunday night.
After Stefano Sturaro was sent off on 28 minutes, Dries Mertens gave Napoli the lead six minutes later, one they held until Darko Lazovic equalized at the stroke of halftime.
Napoli dominated play in the second half, created a host of chances but failed to score again as the game ended 1-1.
The point means that they now move onto 64 points from 31 games.
In the bakrzysztof-pitekttel for the remaining two Champions league slots, only Roma amongst Inter, AC, Lazio and Atalanta, won their weekend’s fixture.
The Romans defeated Sampdoria 1-0 away from home with Daniele De Rossi scoring the winning goal on 75 minutes. Inter and Atalanta drew 0-0 at the San Siro, AC lost 2-1 at Juve while Lazio drew 1-1 at home to Sassuolo.
Elsewhere, Cagliari, Udinese and Frosinone were the other winners over the weekend.
Cagliari beat SPAL 2-1, Udinese were 3-2 winners over Empoli while Frosinone sturned Fiorentina 1-0 at the Artemio Franchi.
In the Ligue One, none of the top six was victorious on game week 31.
PSG (1st) drew 2-2 at home to Strasbourg, Lille (2nd) drew 1-1 away to Reims (6th), Lyon (3rd) lost 3-1 at home to Dijon, St. Etienne (4th) draw 2-2 with Amiens and Marseille (5th) lost 2-0 against Bordeaux.
Despite the draw, PSG still leads the standings with 81 points, 20 ahead of Lille, with 7 games to go in the season.
Elsewhere, only Nimes and Toulouse were victorious last weekend. Nimes defeated Caen 2-0 while Toulouse were 1-0 winners over Nantes.
In the Bundesliga, Bayern Munich returned to the top of the standings after humiliating rivals Borussia Dortmund 5-0 on Saturday.
In the biggest league match in the country, Bayern were just too strong for Lucien Favre’s side, taking an early lead inside 10 minutes through Mats Hummels. By halftime, it was 4-0 with Robert Lewandowski, Javier Martinez and Serge Gnabry adding a goal each.
In the second period, Lewandowski added a fifth to seal a comfortable 5-0 victory for the Bavarians.
The win sees Bayern climb back on top of the standings with 64 points, one ahead of second placed Dortmund with only six games to play in the season.
In the battle for top four, RB Leipzig (3rd) beat Bayer Leverkusen 4-2, Frankfurt (4th) powered past Schalke 2-1, Gladbach (5th) drew 1-1 with Bremen (8th), Wolfsburg (6th) were 3-1 winners over Hannover while Hoffenheim (7th) beat Augsburg 4-0.
Elsewhere, only Dusseldorf and Mainz were the other teams that registered victories in their respective fixtures.
Düsseldorf defeated Hertha Berlin 2-1 while Mainz drubbed Freiburg 5-0.
Results from the La Liga:
-Girona 1-2 Espanyol
-Real Madrid 2-1 Eibar
-Rayo Vallecano 2-0 Valencia
-Barcelona 2-0 Atletico Madrid
-Deportivo Alavés 1-1 Leganés
-Getafe 1-0 Bilbao
-Valladolid 0-2 Sevilla
-Celta Vigo 3-1 Real Sociedad
-Levante 2-2 Huesca
-Real Betis 2-1 Villarreal
Results from the Italian Serie A:
-Parma 0-0 Torino
-Juventus 2-1 AC Milan
-Sampdoria 0-1 Roma
-Fiorentina 0-1 Frosinone
-Udinese 3-2 Empoli
-Cagliari 2-1 SPAL
-Inter Milan 0-0 Atalanta
-Lazio 2-2 Sassuolo
-Napoli 1-1 Genoa
– Monday, Bologna vs Chievo
Results from the French Ligue One:
-Bordeaux 2-0 Marseille
-Lyon 1-3 Dijon
-Amiens 2-2 Saint Etienne
-Angers 3-3 Rennes
-Guingamp 1-1 Monaco
-Nîmes 2-0 Caen
-Reims 1-1 Lille
-Toulouse 1-0 Nantes
-Nice 1-0 Montpellier
-PSG 2-2 Strasbourg
Results from the German Bundesliga:
-Mainz 5-0 Freiburg
-Schalke 1-2 Frankfurt
-Leverkusen 2-4 Leipzig
-Stuttgart 1-1 Nuremberg
-Hertha 1-2 Dusseldorf
-Wolfsburg 3-1 Hannover
-Bayern 5-0 Dortmund
-Augsburg 0-4 Hoffenheim
-Monchengladbach 1-1 Bremen