The first half saw two goals from Mbappe in six minutes, but Juan Foyth gave the home team the lead.
Los Blancos now lead former leaders Barcelona by three points ahead of their Sunday night visit to third-place Atletico Madrid.
After consecutive league losses, Villarreal is still five points outside of the Champions League qualifying spots in fifth position in La Liga.
They got off to a stronger start, as Thibaut Courtois twice denied top scorer Ayoze Perez in the first seven minutes.
Villarreal scored from the subsequent corner when captain Foyth hammered home amid a scuffle in the goalmouth after Courtois had pushed a low looping Perez effort away.
Madrid and Mbappe came alive as a result, and ten minutes later they equalized.
When Diego Conde stopped Mbappe’s shot after he had passed the ball to Brahim Diaz, the Frenchman was there to grab the rebound.
Mbappe did not celebrate after netting; instead, he immediately rushed back to the center circle. On minute 23, he demonstrated his seriousness once more.
Mbappe was allowed too much room on the edge of the Villarreal box after a cutback from the byline, and he utilized it to curl a shot past Conde that was impossible to stop.
This puts Mbappe one goal behind La Liga top scorer Robert Lewandowski with 20 league goals this season.
After a difficult beginning to his life in Madrid, Mbappe has settled well and will be crucial to Real Madrid’s pursuit of La Liga and Champions League glory.
After a poor performance against Atletico in the middle of the week, his regular offensive partner Vinicius Junior started on the bench, allowing him to take center stage.
Villarreal was entertaining once more today, pushing Madrid hard in a match that ended 4–4 the previous season.
Courtois had to stop Nicholas Pepe’s long-range attempt just before halftime and again after the interval to stop Alex Baena.
“The team was worn out in the second half.”
Following their Champions League marathon against Atletico on Wednesday, Real Madrid boss Carlo Ancelotti vented his rage at the lack of relaxation after the match.
After playing for 120 minutes at Wanda Metropolitano, Madrid defeated their city rivals on penalties three days prior.
Real Madrid would not play any more games with less than three days between them, according to Ancelotti.
“We held our own physically,” Ancelotti stated following the El Madrigal triumph. The team was worn out in the second half, but that was to be expected. This triumph says a lot about the group and the tools this squad has.
“We won’t play a game without a 72-hour break after this. We twice requested a change from La Liga, but nothing came of it.
The victory against Villarreal came 66 hours after Madrid defeated Atletico to advance to a Champions League quarterfinal matchup with Arsenal.
FIFA suggested a minimum mandatory 72-hour rest time in 2023, which Madrid has cited in their objection to La Liga.