Real, back in LaLiga action three days on from the embarrassing cup loss to third-tier Alcoyano, took the lead after 15 minutes via Casemiro's header.
Benzema doubled the advantage with a fierce strike in the 41st minute having been teed up by Eden Hazard, who then slotted in the third just before the interval.
Joselu reduced the deficit with a 59th-minute header before Benzema struck his second in the 70th minute.
The result leaves second-placed Real – whose boss Zinedine Zidane was absent from the contest after testing positive for coronavirus – four points behind Atletico Madrid, having played two games more. Atletico are in action on Sunday, hosting Valencia.
Sevilla are up to third after a Youssef En-Nesyri hat-trick secured them a 3-0 home victory over Cadiz, the Moroccan netting twice in quick succession in the first half before completing his treble just after the hour mark.
Villarreal dropped a place to fifth after being held to a 0-0 draw at rock-bottom Huesca, while Real Betis scored twice in the last five minutes to snatch a 2-2 draw at Real Sociedad.
In Serie A, leaders AC Milan crashed to 3-0 defeat at home to Atalanta, who are up to fourth.
Second-placed Inter Milan were unable to take full advantage as they drew 0-0 at Udinese, with boss Antonio Conte being sent off in the closing stages. Inter are two points behind their city rivals at the halfway stage of the season.
Roma are four points behind Conte's men in third after a thrilling 4-3 victory at home against Spezia, clinched by Lorenzo Pellegrino's stoppage-time winner, while Fiorentina won 2-1 at home against rock-bottom Crotone.
In the Bundesliga, second-placed RB Leipzig lost 3-2 at lowly Mainz after twice being in front.
Julian Nagelsmann's team led through Tyler Adams and then, after Moussa Niakhate equalised, a Marcel Halstenberg effort.
Niakhate then netted again to make it 2-2 in the 35th minute, and Leandro Barreiro Martins scored the winner for Mainz five minutes into the second half. Leipzig are four points behind Bayern Munich, who are at Schalke on Sunday.
Bayer Leverkusen, in third, were also beaten 1-0 at home by Wolfsburg. Bote Baku scored the only goal, sending the visitors up to fourth – level on points with Leverkusen.
Eintracht Frankfurt won 5-1 at Arminia Bielefeld, with Andre Silva scoring a brace. Eintracht's other goals came from Filip Kostic, a Joakim Nilsson own goal and Luka Jovic, while Sergio Cordova scored for the hosts at 2-0 down.
Elsewhere, Werder Bremen won 4-1 at Hertha Berlin, with Davie Selke (penalty), Omer Toprak, Leonardo Bittencourt and Joshua Sargent on the scoresheet, a Florian Niederlechner brace secured Augsburg a 2-1 home win over Union Berlin, and Freiburg beat Stuttgart by the same score.
In Ligue 1, Monaco are a point behind the Champions League places in fourth after coming from behind to win 3-1 at home against Marseille.
Guillermo Maripan cancelled out Nemanja Radonjic's opener for Marseille, and further efforts for the hosts came from Aurelien Tchouameni and Stevan Jovetic.
Lens were beaten 1-0 at home by Nice, Youcef Atal scoring the winner.