Barca and Real draw away at struggling sides
A weakened Barca were held to a 2-2 draw at Celta Vigo when Borja Oubina headed an 88th-minute equaliser that left the leaders 13 points clear on 75 points with nine games left.
Lionel Messi set up Barcelona's first goal, an equaliser for Cristian Tello, and bagged their second to pass another scoring milestone by netting in his 19th consecutive league match.
Argentina's World Player of the Year took his tally for the season to 43 goals to complete a run of scoring against every team in La Liga consecutively.
Champions Real also came from behind thanks to Cristiano Ronaldo as they drew 1-1 at Real Zaragoza to reach 62 points.
Malaga's Chile midfielder Pedro Morales scored one goal and set up two more as they ran out 3-1 winners at Rayo Vallecano to climb to fifth on 47 points.
Rayo are ninth with 41 points, one ahead of Levante who were 1-0 winners at home to Sevilla.
Barcelona, who travel to Paris Saint-Germain in their Champions League quarter-final first leg on Tuesday, fielded a side shorn of a number of first-team regulars.
Carles Puyol, Jordi Alba and Xavi were injured absentees, while Andres Iniesta, Sergio Busquets and David Villa started on the bench as Barca put in a disjointed first-half performance.
Celta were without suspended top scorer Iago Aspas but took the lead when Nacho Insa slid in to steer Park Chu-young's pass inside the near post in the 38th minute.
Barca reacted swiftly, with Messi's ball over the top sending Tello scampering free and he fired in off the post.
The visitors dominated the second period, when Iniesta and Villa were thrown into the fray, and the lively Tello crossed low for Messi to fire first time into the corner.
Oubina was left unmarked at the back post to head the equaliser, lifting Celta to 18th place with 24 points, three behind Zaragoza in 17th, which brings safety from relegation.
"We didn't defend well at the end there," Barca's assistant coach Jordi Roura told a news conference. "I don't think we had our minds on Tuesday. The league is very important for us."
Like Barca, Real also rested key players in Zaragoza with their first leg at home to Galatasaray coming on Wednesday.
They were caught napping when Zaragoza's Rodri burst through the middle on the counter to open the scoring after six minutes.
Real struggled to react until Ronaldo won a challenge on the edge of the area and finally beat Roberto at his near post just before the break for his 28th league goal of the season.
Real manager Jose Mourinho made a triple substitution, throwing Sami Khedira, Mesut Ozil and Angel di Maria into the game on the hour, and his side dominated the closing stages against a team without a win in 2013.
Diego Lopez, preferred in goal instead of the fit-again Iker Casillas, blocked a Helder Postiga header on the line but while Real were in the ascendancy they could not make their dominance count.
"Our objectives are the King's Cup final, the Champions League quarter-final and to finish in the top three," Mourinho told a news conference.
"We'll try to win every game, but looking ahead this has no implications for Wednesday."
Malaga ended a run of four La Liga games without a win and boosted morale ahead of the Champions League debutants' return to European action when Borussia Dortmund visit on Wednesday.
At Rayo, they took the lead when Weligton headed in unmarked from a Morales free-kick after 22 minutes only to be pegged back when goalkeeper Willy Caballero was harshly ruled to have tripped Tito in the area. Rayo's Piti scored from the spot.
Malaga restored their advantage in the 55th when Julio Baptista powered in a header from a Morales corner for his first goal of the season, and Morales crowned his performance with a rasping 25-metre drive near the end.