Cristiano Ronaldo’s second-half penalty looked to have set Real on their way to victory but Villarreal, who impressed for long stretches of the game and whose goalkeeper Sergio Asenjo was outstanding, got their reward with Gerard Moreno’s equaliser.
On what was a good day for Barcelona – who beat Granada 3-1 on Saturday – third-placed Atletico Madrid also dropped points as they played out a 0-0 draw at fifth-placed Sevilla.
Diego Simeone’s defending champions were pinned back for much of the game and were fortunate to go into the break on level terms, although they improved in the second half and had a couple of chances to snatch a late winner.
That result also favoured fourth-placed Valencia, who moved to within a point of Atletico with a 2-0 win over Real Sociedad thanks to quick-fire double from Pablo Piatti.
The Argentinian forward broke the deadlock in a tight match eight minutes into the second half and scored again moments later to put Nuno Espirito Santo’s side on to 53 points, their best total at this stage in a season since they won the Primera Division title in 2004.
David Moyes’ men, though, remained five points away from the drop zone.
Also on Sunday, Athletic Bilbao stretched their unbeaten run to three matches in the Primera Division by edging out Eibar 1-0.
Carlos Gurpegi’s first-half goal was all that separated the sides, although the visitors could have a hatful at the Ipurua Municipal Stadium but for a fine performance from home goalkeeper Jaime Jimenez.