Two goals by Lionel Messi inspired leaders Barcelona to a 4-2 victory at Mallorca after the hosts had threatened to derail their visitors' bid for a 10th win in this season's Primera Division.
Barcelona were cruising at 3-0 up at half-time thanks to goals from Xavi, Messi and Cristian Tello. However, Mallorca scored twice in four second-half minutes through Michael Pereira and a Victor Casadesus penalty but Messi struck to bring the hosts' comeback to a halt.
Atletico Madrid moved back to within three points of Barcelona at the top of the table after easing to a 2-0 victory over Getafe.
Adrian Lopez opened the scoring with his first league goal of the season midway through the first half, with Atletico doubling their lead two minutes before half-time as Arda Turan was allowed to run through on goal and slot coolly past Miguel Angel Moya, despite having controlled the ball with his hand.
Real Madrid youngster Alvaro Morata came on to score and give his side a 2-1 win over Levante in horrible conditions.
The match was contested in almost unplayable conditions, with the ball barely bouncing or rolling on the sodden surface. But Cristiano Ronaldo fired Real into a first-half lead after having a cut to his eye patched up.
Angel Rodriguez, on as a substitute early in the second half, equalised in the 62nd minute. Xabi Alonso missed a penalty but then delivered the free-kick for Morata, who had only been on the pitch for two minutes after replacing Mesut Ozil, to head the winner.
Valencia claimed their first away point in five league games with a 1-1 draw at Valladolid.
Aly Cissokho had headed the visitors into the lead after just 15 minutes but the French defender went from hero to villain in the second half when he brought down Omar Ramos to concede a penalty and was shown a red card for denying a clear goalscoring opportunity.
Victor Perez confidently converted the spot-kick to extend Valladolid's unbeaten run to four games as both sides remain in mid-table on 15 points from 11 games.
First-half goals from Oscar de Marcos and Markel Susaeta were enough to hand Athletic Bilbao a 2-1 win over Sevilla as the hosts withstood a late flurry to take all three points.
De Marcos put the hosts ahead at San Mames with a neat side-footed finish from Jon Aurtenetxe's cross in the 27th minute and Susaeta made it two with the last attack of the half as Andres Palop could only help his powerful drive into the net.
However, a grandstand finish was ensured when Athletic were reduced to 10 men as Ander Herrera was shown a second yellow card 14 minutes from time, and two minutes later Alvaro Negredo reduced the arrears from the penalty spot.
Information from the Press Association was used in this report