Chances were limited in the opening stages of the game and it wasn't until the 18th minute until a goalkeeper was forced to make a save. Sergio Asenjo produced a dramatic punch from a tame Karim Benzema header. One for the cameras perhaps...
Villarreal grew into the game after this and Denis Cheryshev had a powerful effort tipped over by Kiko Casilla.
Just before half-time, Villarreal had the perfect opportunity to get themselves ahead, and made no mistake. Manuel Trigueros had an effort blocked by the arm of Sergio Ramos and a penalty was rightly given.
Bruno stepped up to take it and produced finished with an audacious panenka to send the Yellow Submarine ahead at half-time.
However, Real Madrid stepped things up in the second half and took less than three minutes to equalise. Sergio Ramos rose at the back post and headed home from a James corner.
Just minutes later and Real Madrid almost found themselves ahead when Benzema headed just wide after latching on to a ball from midfield.
Gareth Bale then almost put his side ahead, but his left-footed shot from the right sailed just past the far post.
With less than ten minutes of normal time to go, substitute Morata had a header tipped over the bar by Asenjo in what was another overly dramatic save.
Madrid then had a penalty appeal turned down when Sergio Ramos appeared to be bundled over by Soriano, but the referee waved away appeals.
Ronaldo, who was relatively quiet, had a chance to win it for Zidane's men in the 89th minute. Madrid patiently passed the ball around the edge of the box, but the Portuguese forward could only a muster a shot straight down Asenjo's throat.
In the dying seconds of the game, Ronaldo had a free-kick comfortably saved by Asenjo once again, and Villarreal held on for a big point at the Bernabeu.