“Vini had a very good game and he was decisive, I’m very happy for him,” Alonso told reporters.
Alonso brought Fede Valverde back into the team, playing him at right-back in the absence of injured duo Dani Carvajal and Trent Alexander-Arnold.
Madrid had the better of a slow-paced first half at the Santiago Bernabeu.
Teenage attacker Franco Mastantuono might have sent Los Blancos ahead but Villarreal defender Renato Veiga blocked his shot after Mbappe cut the ball back to him.
At the other end, Thibaut Courtois saved superbly from Tani Oluwaseyi, who snuck in behind the centre-backs but could not beat Madrid’s Belgian goalkeeper.
Los Blancos took the lead early in the second half through Vinicius, whose shot took a fortunate deflection off Santi Comesana and flew past the helpless Arnau Tenas.
Xabi Alonso brought on Jude Bellingham for the final 25 minutes, after benching him for the second game running following the Atletico debacle.
Thomas Tuchel left the midfielder out of his England squad for upcoming World Cup qualifiers this week, and he was out to prove a point.