Mallorca maintain perfect home record
Mallorca have 37 points from 21 games, one ahead of Sevilla, after the Andalusians suffered a miserable night at Real Zaragoza, losing 2-1 and finishing the game with nine men.
The top three, leaders Barcelona, Real Madrid and Valencia all played on Saturday.
The champions have 55 points after surviving two red cards to beat Getafe 2-1 at home while Real Madrid swept aside Espanyol 3-0 at the Bernabeu to stay in touch five points back in second.
Valencia eased past Real Valladolid 2-0 to secure third place with 42.
Mallorca's Portuguese defender Nunes rose highest to meet a free-kick in the 82nd minute, making it 10 wins from 10 for Mallorca at their Ono Estadi.
The result was harsh on Villarreal and new coach Juan Carlos Garrido after they had created the clearer chances in a poor match.
"I'm very proud of the team for their conduct, their behaviour and the way they perform on the pitch," Mallorca coach Gregorio Manzano told reporters.
"It's important to keep talking about football and not about what's going on off the pitch," he added. The club are in talks with creditors to try to avoid going into administration.
Sevilla rested players with one eye on Wednesday's King's Cup semi-final second leg away to Getafe, but fell behind when Matteo Contini scored from a scramble at a corner in the 31st minute.
Frederic Kanoute volleyed them level soon after but Alvaro Negredo headed a free-kick into his own net just before the break.
Spain striker Negredo's night went from bad to worse when he kicked Contini as the two tussled for the ball and was shown a straight red card in the 81st minute. His team mate Marius Stankevicius soon followed for a professional foul.
Zaragoza had striker Adrian Colunga sent off at the end but the win hauled them out of the relegation places up to 17th.
Deportivo La Coruna had Pablo Alvarez sent off in the first half of their 0-0 draw away to Malaga and stay sixth with 35 points.
In the late game, Cup semi-finalists Atletico Madrid and Racing Santander drew 1-1 at the Sardinero. The two sides meet there again on Thursday with Atletico holding a 4-0 first-leg lead.