By SABC Sport
19th February 2023
Federico Valverde broke the deadlock for Carlo Ancelotti's side in the 78th minute and Marco Asensio made sure with a second in time added on.
Barca will be bidding for their seventh straight league win on Sunday when they play Cadiz at home.
Third-placed Real Sociedad lost ground on the top two as they were held 1-1 at home by 10-man Celta Vigo.
Mikel Oyarzabal gave Sociedad an early lead and although Celta's Renato Tapia was sent off for a second yellow-card offence in the 78th minute, Robin Le Normand's own goal in stoppage time denied the home side victory.
Real Betis stayed fifth after beating Real Valladolid 2-1 at home and Mallorca maintained their top-six challenge with a 4-2 win against Villarreal in Palma.
In the Bundesliga, Bayern Munich were dealt a blow in pursuit of their 11th consecutive title as they lost 3-2 at Borussia Monchengladbach.
Bayern played for most of the match with 10 men after the early dismissal of France defender Dayot Upamecano and fell behind to Lars Stindl's effort.
Eric Maxim Choupo-Moting equalised before the interval, but Gladbach regained control through Jonas Hofmann and Marcus Thuram.
Mathys Tel pulled one back for Bayern in the closing stages, but they could be knocked off top spot on Sunday if second-placed Union Berlin beat bottom club Schalke.
Freiburg maintained their Champions League challenge as goals in either half from Michael Gregoritsch and Lucas Holer secured them a 2-0 win at Bochum.
Leipzig remain a point behind Freiburg in fifth place after winning 3-0 at Wolfsburg and Eintracht Frankfurt beat Werder Bremen 2-0 at home to stay sixth.
Stuttgart secured their first league win in seven matches, 3-0 at home against Cologne, to climb out of the bottom three.
In Serie A, there were wins for both Inter Milan and AC Milan as the two city rivals made sure they did not fall further behind runaway leaders Napoli.
Napoli moved 18 points clear after winning 2-0 at Sassuolo on Friday night, but the gap was reduced again after Inter beat Udinese 3-1 at home and Milan won 1-0 at Monza.
Inter striker Romelu Lukaku's first-half penalty was cancelled out by Udinese's Sandi Lovric before half-time, but Henrikh Mkhitaryan and Lautaro Martinez added further goals for Simone Inzaghi's side in the second period.
Milan stayed three points behind after Junior Messias scored the only goal against Monza in the first half.
Bologna forward Riccardo Orsolini scored a last-minute winner in his side's 2-1 win at Sampdoria, who remain deep in relegation trouble.
In Ligue 1, bottom club Angers' winless league run was extended to 16 matches as they lost 2-1 at Strasbourg, while Nice were held 0-0 at home by Reims.