The result means Carlo Ancelotti's side move onto 17 points, three above city rivals Atletico Madrid, who lost 1-0 away to Alaves earlier in the day.
Villarreal, meanwhile, remain unbeaten but have won just one of their six matches this term -- four of which they have drawn 0-0.
"It's a bittersweet point because it's at home against a direct rival and you want to take the three points in these games; just one isn't what we wanted," Madrid goalkeeper Thibaut Courtois said.
"Keeping a clean sheet is good given we've conceded in our last few games, though.
"We wanted to press them high but they dealt with us well in the first half and it was tough to get the ball off them. We misplaced too many passes when we had it, but these things happen."
It was a frustrating affair for the hosts where clear cut chances were few and far between, with the final ball too often lacking.
Arnaut Danjuma looked most likely to score for the visitors, forcing Courtois into a couple of smart stops in each half.
Real defender Eder Militao sent a header wide after the break from a Marco Asensio freekick as Madrid struggled to make a breakthrough.