The dramatic draw on Wednesday broke Madrid's 10-game away winning run and allowed Barcelona to close to within six points as the title race enters its home stretch with 10 games to play.
Like Malaga's Santi Cazorla did against Madrid on Sunday, Marcos Senna bent a free kick around the defensive wall to level in the 83rd, canceling out Cristiano Ronaldo's 62nd-minute opener for the visitors off an audacious assist by Mesut Oezil.
Mourinho, who had already been warned by the referee and had seen one of his assistants ejected for complaining, was banished in the 84th from the sideline in protest of the foul call that set up Senna's equalizer.
Madrid's Sergio Ramos and Oezil were both sent off with their second yellow cards a minute later as Madrid played the final five minutes with nine men.
Mourinho, along with his staff and players, refused to speak to the media after the match, but Ronaldo was heard shouting “It's a robbery, just a robbery” as he left the pitch shaking his head.
“I think that we are doing our job and sometimes they hurt us,” Madrid defender Marcelo told La Sexta television just after the final whistle.
Villarreal gave a spirited performance on the debut of Miguel Angel Lotina, the troubled team's third coach of the season, and thanks to Senna's aim was rewarded with a hard-earned point that kept it four points above the drop.
“The truth is that to be behind in the score and to draw with Madrid late on, the goal was very important,” said Senna, whose team had a pair of penalty shouts turned down by the referee as well.
“I think the referee was fine. We thought we had two penalties, they complain about other things. The referee is always to blame. That's football.”
The first half was an up-tempo contest with neither side able to convert their various scoring chances.
Madrid assistant coach Rui Faria was sent off for comments to the referee in the 50th. It was the fourth time he has been ejected this season.
As “The Yellow Submarine” tired, Madrid settled down in defense and Ronaldo soon combined with Oezil, who had been quiet until then, to break through.
Ronaldo raced forward to meet Oezil's brilliant back-heeled pass, gained a better firing angle with one touch and rifled the ball beyond goalkeeper Diego Lopez for his 43rd goal in all competitions this campaign.
The Portugal forward has 33 goals in league play so far this season, one less than Barcelona's Lionel Messi.
But just like against Malaga, Madrid failed to finish off its adversary and a foul by Hamit Altintop outside the area gave Villarreal a chance that Senna did not waste.
The veteran Brazilian midfielder left Iker Casillas flatfooted as he curled his right-footed shot around the wall and bounced it past the Spain goalkeeper into the net.
“We have to improve many things,” Marcelo said. “Today we conceded another goal off a set piece, but we are still in front and we have to keep working to move forward.”
Chaos then broke out as Madrid lost its collective cool, and referee Jose Paradas sent Mourinho from the dugout in the 84th. Ramos followed his coach a minute later for a tackle near the halfway line and Oezil as well for mocking the referee.
Paradas also banished Mourinho from a Copa del Rey match against Murcia in November 2010.
Also on Wednesday, it was: Zaragoza 2, Valencia 1; Real Sociedad 1, Levante 3; Atletico Madrid 2, Athletic Bilbao 1; and Sporting Gijon 2, Mallorca 3.
Messi scored a hat trick to become Barcelona's all-time scorer with 234 goals and lead the European champions to a 5-3 win over Granada on Tuesday, while Osasuna drew 0-0 at home to Getafe.
On Thursday, it's: Racing Santander vs. Sevilla, Real Betis vs. Espanyol and Malaga vs. Rayo Vallecano.