Real Madrid players celebrate after a goal during the La Liga soccer match between Real Madrid and Villareal in Madrid, Spain, on Saturday, Oct. 5, 2024. AP
Los Blancos lost in the Champions League at Lille but are still unbeaten in the Spanish top flight and moved level with leaders Barcelona before the Catalans visit Alaves on Sunday.
Valverde's deflected effort and a rocket from Vinicius allowed Madrid to put a four-point gap between them and their third-placed opponents, who battled well but came up fractionally short in the capital.
Madrid's victory was marred by a late injury to defender Dani Carvajal, who had to be taken off on a stretcher.
Madrid coach Carlo Ancelotti started Kylian Mbappe after the French striker had recovered from a thigh problem.
The former Paris Saint-Germain striker could only appear from the bench in Madrid's disappointing midweek display.
Mbappe, whom France have not selected for upcoming Nations League fixtures, was quiet at the Santiago Bernabeu as his team ground out victory with a determined, rather than inspiring, performance.
The forward sent an early volley off-target from Luka Modric's corner.
Instead it was midfielder powerhouse Valverde who broke the deadlock after 14 minutes.
The Uruguayan's drive from distance deflected off Villarreal playmaker Alex Baena and arced beyond the reach of goalkeeper Diego Conde.
The visitors, enjoying a strong start to the season under coach Marcelino Garcia Toral, came close when Nicolas Pepe's header clipped the top of the crossbar. Then Thierno Barry headed over from close range.
Mbappe had one further chance, bursting into the area with his electric pace, but goalkeeper Conde managed to dispossess him with an outstretched leg.
Villarreal appealed for a penalty early in the second half when Aurelien Tchouameni, playing at centre-back, pulled down Barry, but the French striker was offside.
Baena hit the side-netting of Andriy Lunin's goal with a free-kick, nearly catching out the Ukrainian goalkeeper standing in for the injured Thibaut Courtois.
Vinicius flashed a shot narrowly wide, before his strike partner Mbappe was replaced with 20 minutes to go by Rodrygo Goes.
Brazil striker Vinicius, who is hoping to win a first Ballon d'Or later in October, netted the second with a superb effort from outside the area, which ripped into the top corner.
In stoppage time, Spanish right-back Carvajal suffered an injury while attempting to clear the ball under pressure from Yeremy Pino.
Earlier nine-man Celta Vigo earned a 1-0 win at bottom of the table Las Palmas.
The Canary Islanders were unable to record their first win of the season even after Ilaix Moriba and Iago Aspas's red cards for Celta, who climbed to ninth thanks to Borja Iglesias' goal.
Osasuna moved into fifth with a 1-1 draw at Getafe, while Espanyol beat Mallorca 2-1 and Rayo Vallecano won at Valladolid by the same score.
(For more sports news and updates, follow Ahram Online Sports on Twitter at @AO_Sports and on Facebook at AhramOnlineSports.)
Short link: