The contest was initially due to take place before the winter break in Spain, but Madrid's involvement in the Club World Cup meant that it had to be rescheduled before La Liga officially starts again this weekend.
Madrid led into the final 10 minutes at the Estadio de la Ceramica, but Santi Cazorla's second of the match in the 82nd minute saw the points shared, leaving the European champions seven points off the summit.
Madrid, who stay fourth in the table, entered the match having only been victorious in one of the last four league meetings between the two teams, but a disappointing campaign to date had left Villarreal in 18th position.
The Yellow Submarine took a shock lead in the fourth minute, however, when Samuel Chukwueze created some space in the final third before finding Cazorla, who curled a wonderful effort into the bottom corner of the net.
Villarreal's threat was coming on the break, but Real were in control of the possession as the first period developed, while Vazquez came close to registering in the 15th minute only to be denied by Sergio Asenjo.
Asenjo had to keep out a strike from Gareth Bale in the 26th minute as the visitors looked for a third, but Chukwueze was causing problems down the other end and had one deflected behind by Varane shortly after Bale's effort.
Luka Modric thought that he had sent the away side 3-1 ahead 12 minutes before the interval, but the offside flag came to Villarreal's rescue after Asenjo had kept out an effort from Bale.
The visitors had the first half-chance of the second period when the ball fell kindly for Benzema in a dangerous position, but the Frenchman's low strike missed the post.
Villarreal were the team on the front foot as the 60-minute mark came and went, but they were struggling to carve out clear opportunities, with a header from Victor Ruiz the best that they could manage during a good spell.
Gerard Moreno saw a low strike just miss the post 25 minutes from time, before Asenjo made a wonderful stop to prevent Vazquez from scoring a third for Madrid after the ball had broken for the Spaniard inside the box.
Asenjo made a smart save to deny Isco in the 85th minute as the visitors looked for a third, but Villarreal closed out the final moments to secure the point which moved them out of the bottom three.
Next up for Madrid is a home match against Real Sociedad on Sunday, while Villarreal will look to continue their unbeaten run under new boss Luis Garcia when they travel to Eibar.
VILLARREAL (4-2-3-1): Asenjo; Layun, Alvaro, Ruiz, Costa; Caseres (Ekambi 63'), Fuego (Trigueros 82'); Cazorla, Fornals Chukwueze; Moreno (Bacca 69')
REAL MADRID (4-3-3): Courtois; Carvajal, Ramos, Varane, Marcelo; Casemiro, Kroos (Vinicius 86'), Modric (Valverde 64'); Lucas, Benzema, Bale (Isco 46')