Ronaldo, Kaka score for 100% Real
The home side were rocked back in the second minute when Ronaldo sped down the left wing, cut inside and struck with a low shot from just outside the penalty area for his fifth league goal in four matches.
Villarreal defender Gonzalo Rodriguez was sent off 10 minutes before the break, earning a second yellow card for catching Kaka in the chest with a reckless flying kick.
Kaka stepped up to double Real's lead in the 73rd minute when the referee ruled Angel Lopez had handled Marcelo's cross and Gonzalo Higuain and Ronaldo both went close as Real pressed for a third.
Their fourth win out of four put them level on 12 points with champions Barcelona, who thrashed Racing Santander 4-1 on Tuesday thanks to two goals from Lionel Messi and one apiece from Zlatan Ibrahimovic and Gerard Pique.
Ronaldo scored inside the first minute in Sunday's 5-0 rout of promoted Xerez and he said his early goal on Wednesday had thrown Villarreal off their stride.
"They are difficult to beat at home but we managed it and after Kaka's goal we were more in control," he told reporters.
At the Calderon, Atletico Madrid conceded an equaliser in the 89th minute to draw 2-2 with Almeria, increasing the pressure on coach Abel Resino with his side on just two points from four matches.
Athletic Bilbao missed their chance to make it four wins out of four when they lost 1-0 at promoted Tenerife and Manu del Moral scored twice and Pedro Leon curled in a stunning freekick as Getafe came from a goal down to beat visiting Valencia 3-1.
Uruguayan striker Diego Forlan missed a first-half penalty for Atletico before Almeria took the lead in the 26th minute when Albert Crusat found space on the left and crossed for Pablo Piatti to finish past Roberto.
Cleber Santana equalised and a defensive error let Forlan to give Atletico the lead 10 minutes into the second half.
Piatti then grabbed his second to secure a point for Hugo Sanchez's side and Atletico's players and staff were whistled from the pitch by their disgruntled fans.