Atletico Madrid are 10 points clear at the top of La Liga after extending their winning run with a 4-2 victory at Cadiz that saw Luis Suarez score a brace.
Diego Simeone's men opened the scoring via Suarez's fine 28th-minute free-kick and after that was cancelled out by an Alvaro Negredo effort, Saul Niguez put Atletico back in front shortly before the break.
Suarez struck again – his 14th league goal of the season – with a penalty five minutes into the second half to make it 3-1, Negredo pulled another back for Cadiz in the 71st minute, and Koke then restored the two-goal advantage with two minutes of normal time remaining as Atletico posted an eighth successive league win.
Lionel Messi scored a delightful free-kick of his own and Antoine Griezmann netted the winner as Barcelona beat Athletic Bilbao 2-1 at the Nou Camp and moved up to second place.
Messi's curling effort gave Barca the lead in the 20th minute before Athletic equalised via a Jordi Alba own goal early in the second half. Griezmann subsequently secured victory for Ronald Koeman's men with a finish in the 74th minute.
Barca replaced Real Madrid in second – both sides are 10 points behind Atletico and have played a game more than the leaders.
What was Messi's 650th goal for Barca came on the day they had released a statement denying responsibility for the publication of details of his current contract with the club, which expires at the end of the season.
Spain's El Mundo published the details, claiming Messi is earning over 555million euros across his four-year deal – Barca said they will take "appropriate legal action" against the newspaper.
Also on Sunday, Granada's home clash with Celta Vigo and Getafe against Alaves both finished goalless.
In Ligue 1, Paris St Germain suffered the maiden loss of boss Mauricio Pochettino's tenure as a late Terem Moffi goal condemned them to a shock 3-2 defeat at relegation battlers Lorient.
After Laurent Abergel had given Lorient the lead, PSG turned things around via Neymar penalties either side of the break.
But the hosts, who are 18th, then produced a fightback that saw Yoane Wissa equalise in the 80th minute and fellow substitute Moffi then net the winner in stoppage time.
PSG are third in the table, three points adrift of Lille, who moved to the summit with a 1-0 home win over second-bottom Dijon, sealed by Yusuf Yazici's first-half goal.
Monaco are three points behind PSG in fourth following their 2-1 win at Nantes.
Guillermo Maripan and Kevin Volland netted for Monaco before Renaud Emond replied in the 83rd minute. Nantes had had Nicolas Pallois sent off 10 minutes earlier.
Metz are after sixth after coming from behind to win 4-2 at Brest.
Franck Honorat's opener for Brest was cancelled out by Farid Boulaya before Irvin Cardona made it 2-1 to the home side just after the break.
Pape Sarr then drew things level again in the 73rd minute, Pape Ndiaga Yade's effort put Metz ahead eight minutes later, and Vagner subsequently added a fourth with an 87th-minute penalty.
Elsewhere, Angers won 3-1 at home against basement boys Nimes, and there were 1-0 wins for Reims at Strasbourg and St Etienne at Nice.
Roma moved above Juventus up to third place in the Serie A table with a 3-1 home win over Hellas Verona, with Gianluca Mancini, Henrikh Mkhitaryan and Borja Mayoral all netting for the hosts in the first half. Ebrima Colley reduced the deficit just after the hour mark.
Napoli are fifth after winning 2-0 at home against second-bottom Parma, with Eljif Elmas and Matteo Politano getting on the scoresheet.
And Lazio won 3-1 at Atalanta to leapfrog them in the table – they are now sixth and seventh respectively.
Adam Marusic and Joaquin Correa put Lazio 2-0 up, with Mario Pasalic's reply then being followed by a Vedat Muriqi effort.
Rodrigo De Paul scored a penalty and was then sent off in Udinese's 1-0 victory at Spezia, who subsequently had Riccardo Saponara dismissed.
Sassuolo earned a 1-1 draw at Cagliari via Jeremie Boga's stoppage-time goal, and rock-bottom Crotone lost 3-0 at home to Genoa, for whom Mattia Destro netted twice.
In the Bundesliga, Wolfsburg are third after beating Freiburg 3-0 at home thanks to goals from John Brooks, Wout Weghorst and Yannick Gerhardt, and Marius Wolf registered a brace as Cologne defeated Arminia Bielefeld 3-1.