Ronaldo scores 30th league goal as Real Madrid draw Villarreal
Real Madrid were held 1-1 at home by Villarreal to remain only two points ahead of rivals Barcelona in the Primera Division.
Cristiano Ronaldo's second-half penalty looked to have set Madrid 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.
Surprisingly it was Villarreal who started on the front foot and they almost took the lead in the 12th minute.
Moi Gomez's shot was saved by Iker Casillas and Dani Carvajal cleared Moreno's follow-up off the line with a brilliant diving header.
Madrid took more than half an hour to find their stride, defender Raphael Varane heading inches wide from Toni Kroos' corner.
Villarreal's Sergio Marcos made a vital clearance to keep Isco's cross from reaching Marcelo as the tide began to turn Madrid's way.
Gareth Bale mishit a right-footed cross and almost got lucky, the ball rebounding off the crossbar. Varane then headed another Kroos corner over.
Ronaldo fired a free-kick over the bar as the half ended goalless.
But just five minutes after half-time, and with former Atletico Madrid man Asenjo having made a good save from Ronaldo, Madrid took the lead.
Ronaldo won and converted the spot-kick as he was hauled down by Eric Bailly before sending Asenjo the wrong way.
Asenjo then slid to save from Ronaldo and was caught - accidentally - by the Portugal forward's knee as he followed through.
Bailly's slip allowed Ronaldo to set up Bale, who blazed high over the bar, before Ronaldo was again off target with a free-kick.
And they were punished when Moreno exchanged passes with recent substitute Luciano Vietto and fired low left-footed past Casillas from the edge of the box.
Asenjo made his best save yet from Ronaldo's glancing header and Villarreal could have taken the lead, only for Vietto to stumble and fall when through on goal.
Jese, on as a substitute for Madrid, missed an equally presentable chance, shooting wide when Asenjo fumbled a cross into his path.
Vietto then drew a sharp save from Casillas with a diving header at the near post.
Bailly was perhaps fortunate not to concede a second penalty when he laid hands on the back of Javier Hernandez, who toppled to the ground.
Asenjo saved when Jaume Costa deflected Kroos' cross towards his own goal and Ronaldo headed over as Villarreal hung on for a point.