The LaLiga leaders' slip-up will give renewed hope to title rivals Sevilla after their 2-0 win over Elche on Friday.
Carlo Ancelotti's Real moved four points clear of second-placed Sevilla at the top as they look to regain the crown they lost to Atletico Madrid last season.
Real struggled in the first half before creating chances after the break but could not find the net. They have scored just once in their last three games.
"With a little more accuracy and luck, we could have scored. We had three close calls with the goalkeeper, hit the crossbar twice," said Ancelotti.
"I'm worried about the team when we don't look for a chance to score, we looked for it. We lacked effectiveness."
The draw moves Unai Emery's Villarreal up to fifth, only two points behind Barcelona in the fourth and final Champions League spot.
Real Madrid will now turn their focus to Tuesday's Champions League last-16 first leg at Paris Saint-Germain.
Bale was surprisingly named in the starting line-up for his first appearance for Real Madrid since August.
He has suffered from various injuries in the months since, although he has played four times for Wales.
"He had a serious injury," said Ancelotti. "The important thing is that today he had a chance, and he showed that he is with us and that he is committed."
"Bale played well. He could have scored. He was dangerous up front. Everything I told him to do, he did well."
Bale looked dangerous in patches, with one second-half shot tipped onto the crossbar by home goalkeeper Geronimo Rulli, before being replaced by Luka Jovic with 15 minutes remaining.
Ancelotti said he had not thought about whether Bale might start against PSG.
"I don't know. We have to wait and see what will happen in the next hours, because we can get everyone back," said the coach.
Karim Benzema was missing for Real, who are hoping the Frenchman will be fit for the trip to Paris.
Villarreal were the more threatening side in the first half. Alberto Moreno struck the post and visiting 'keeper Thibaut Courtois denied Arnaut Danjuma an opening goal with a fine save.
Real dominated possession in the second period, with Rulli also saving from Toni Kroos.
"In the first half, the team was a little unwilling, a little uncommitted. It changed in the second half. We had more opportunities to play more directly," said Ancelotti.
"In the first half, the team defended too deep and we were not aggressive in individual battles. In the second half, it was completely different. We saw a much more aggressive team without the ball. This was the key."