|Frederic Kanoute, left, keeps Sevilla in touch with leaders Barca [AFP]
Sevilla moved back into third place in the Spanish league with a 1-0 win at Sporting Gijon, while Mallorca moved into the top five with a first ever victory at Osasuna.
Frederic Kanoute poked Jesus Navas' cross into the roof of the net after nine minutes in a match where hail affected play, while at least a dozen people were reportedly injured in fights between the clubs' ultra fans before the match.
Sevilla had been in third place two weeks ago, before slipping to fourth.
Mallorca earned their first away win of the season and their first ever triumph at the Reyno de Navarro stadium with a 1-0 victory at Osasuna courtesy of a Chori Castro goal in the 61st minute.
"We've ended this fear that has lasted 17 years - today's a great day in Mallorca's history,'' coach Gregorio Manzano said.
But he added: "Records remain anecdotes, the most important thing is that we keep picking up points.''
Barcelona ended 2009 with a 1-0 win over Espanyol on Saturday to lead with 39 points. Real Madrid beat Valencia 3-2 on Saturday to sit second with 34 points, while Sevilla are next with 30 followed by Valencia on 28 and Mallorca with 27.
Barcelona will miss next weekend's matches - the last before the Christmas break - since they are playing at the Club World Cup where they are going for their sixth major trophy of the season.
Substitute Joseba Llorente scored one minute into injury time as Villarreal beat Atletico Madrid 2-1 at the Vicente Calderon, where Vietnam President Nguyen Minh Triet watched alongside upset fans.
"We played with panic from minute one. We made incomprehensible errors,'' coach Quique Sanchez Flores said. His side are one point above the drop zone.
David Fuster's 48th-minute equaliser was well-deserved since Villarreal had created the better chances until then, with Atletico goalkeeper Sergio Asenjo denying the Spanish forward early on before Giuseppe Rossi flashed a low shot off the far post in the 17th minute.
Despite the early pressure, it was Atletico that went ahead through Simao Sabrosa in the 37th, the Portugal winger latching on to Jose Antonio Reyes' perfect through ball to slot past Asenjo.
But Atletico's chances were limited without injured striker Sergio Aguero and their defence failed to keep an eye on Fuster, who moved between two defenders to head in Joan Capdevila's floating cross.
Llorente was also allowed to move in-between defenders to guide home a low cross as Villarreal moved on to 18 points.
"It's not easy to play at the Calderon. The fans are tired, disillusioned and impatient and I understand they're feeling the pressure,'' Sanchez Flores said, days after Atletico lost 3-0 to FC Porto in the Champions League.
Deportivo stayed in the European places with 26 points thanks to Pablo Alvarez's equalising header in the 74th minute, which cancelled out Kalu Uche's 59th-minute opener.
Juan Angel Albin scored a brace as Getafe won for the third time in four games, while Alexandre Geijo headed home the winner with eight minutes to play to give Racing victory at their Sardinero stadium.
Malaga failed to pick up their first win since opening day after Jesus Gamez scored an own-goal in the 69th to cancel out Duda's opener.
Malaga stayed second last with nine points, while Valladolid joined Racing, Atletico, Almeria and Espanyol with 13 points.
Zaragoza, who fired coach Marcelino Garcia on Saturday after a 2-1 loss to Athletic Bilbao, are 18th with 12 points.