For the second match in the space of a week, Madrid found themselves two goals down, but this time they were able to fight back courtesy of three goals in the final half-hour as they took another step towards a first league title since 2012.
Goals from Manuel Trigueros and Cedric Bakambu had put the visitors on course for a second damaging defeat in the space of four days, but Gareth Bale pulled one back before a highly-controversial Cristiano Ronaldo penalty restored parity.
Alvaro Morata then came off the bench to complete the turnaround, lifting Madrid one point clear at the top of the table with a game in hand over the chasing pack.
Having started the weekend top of the table, Madrid had dropped down to third by the time they kicked off against Villarreal following victories for title rivals Sevilla and Barcelona against Real Betis and Atletico Madrid respectively.
The need for a return to winning ways following Wednesday's shock defeat at the hands of Valencia saw Zinedine Zidane hand the fit-again Bale his first start since November as he lined up alongside Benzema and Ronaldo for the first time in 120 days.
It failed to make much difference as Real Madrid struggled to break through against the league's stingiest defence in the first half, though, and it was the hosts who enjoyed the better of the opening 45 minutes without being able to find the breakthrough.
Mario Gaspar was the first to test either keeper when he collected a pass from Trigueros before digging a shot out from underneath his feet that forced Keylor Navas into a full-stretch one-handed save.
It wasn't until midway through the half that Madrid created their first clear opening, but it was the best of the half as Benzema rose to meet Marcelo's cross at the back post, only for Sergio Asenjo to claw the ball away from point-blank range.
Asenjo, who has kept a league-high 11 clean sheets this season, picked up an injury while making the save and was eventually forced off, but before the change Villarreal enjoyed their best period of the first half with three chances in as many minutes around the half-hour mark.
Trigueros saw an effort from the edge of the box well blocked before it could test Navas, while moments later Samu Castillejo - the standout player of the half - was at full stretch to steer Jaume Costa's cross narrowly over the bar.
It was the left flank that provided most joy for Villarreal in the first half, and Bakambu was the next to be released down that channel, only for his shot from a tight angle to be kept out by Navas.
Andres Fernandez was the man to replace Asenjo in goal for his first league appearance, but it wasn't until the opening minutes of the second half that he was tested when Benzema fired an effort straight at the keeper when he should have done better.
That miss seemed extra costly when Villarreal broke the deadlock just three minutes later, with Marcelo's clearance only falling as far as Trigueros, who fired a first-time half-volley into the ground and past a helpless Navas from inside the area.
Things quickly went from bad to worse for Madrid's faltering title hopes as the home side doubled their advantage within six minutes when Bruno Soriano fed the ball through for Bakambu, who held off Sergio Ramos before tucking his finish into the bottom corner.
The goal left Madrid needing three against the division's best defence to move back to the top of the table, but they suddenly burst into life having fallen two behind and came within inches of a reply just past the hour mark when Ronaldo thumped a first-time volley against the post.
Marcelo fired an effort of his own over the top from the resulting corner before Castillejo threatened a killer third at the other end moments later, but that proved to be one of the last attacking forays Villarreal would enjoy as Madrid began to lay siege to the home side's goal.
The first goal back came from the head of Bale, who found space inside the box to plant a firm header into the bottom corner having been picked out by Dani Carvajal's cross with just over 25 minutes remaining.
Madrid's fightback did come with a helping hand from the referee, and Villarreal were incensed 10 minutes later when Jesus Gil pointed to the spot for handball after a mis-hit Toni Kroos effort had been blocked and bounced up against the top of Bruno's chest.
Ronaldo had a lengthy wait to take the spot kick as Villarreal's players and staff fumed at the decision, resulting in a flurry of cards and manager Fran Escriba being sent from the touchline, but the Portuguese superstar made no mistake when the time eventually came, hammering a powerful effort past the keeper from 12 yards.
Suddenly there only looked like being one winner as the momentum piled behind Madrid, and sure enough the decisive goal arrived with just seven minutes of normal time remaining when Fernandez was unable to keep out Morata's powerful downward header from a pinpoint Marcelo cross.
There was more drama to come in the closing stages as first Ramos nodded a chance into the ground and over the bar before Villarreal quickly broke at the other end and created an opening of their own, only for Jonathan dos Santos to fire wide after the ball had broken kindly for him inside the box.
Real should have killed the game off once and for all in the last of four minutes stoppage time when Morata was left completely unmarked in the area, but he failed to hit the target when he simply had to score from close range.
It did not prove to be a costly miss, though, as Madrid held out for what could be a pivotal moment in the title race, climbing back above Barcelona and Sevilla into top spot with a game still in hand.
Villarreal, meanwhile, remain sixth in the table and are now just a point clear of seventh-placed Eibar having also missed the chance to close the gap on Atletico Madrid to three points in their race for a Champions League spot.