Real were fresh off a big 2-0 win over city rivals Atleti on Saturday that put Zinedine Zidane's side up to third in La Liga, three points behind Diego Simeone's league leaders. Los Blancos remain in third due to goal difference.
The visitors were left to play most of the match with just 10 players after Raul Garcia was sent off after being shown his second yellow card in the opening 13 minutes for a pair of fouls.
Zidane's side took firm control in the latter stages of the first half and it finally paid off just before the break with an exquisite strike from Toni Kroos to give Real a 1-0 lead after the opening 45 minutes.
Bilbao, who had looked dangerous at times in the first half, levelled the score shortly after the break when Thibaut Courtois spilled Ander Capa's close-range shot right back in his path and the Athletic man tucked the rebound away.
Real Madrid's top scorer Benzema fired the hosts back in front in the 74th minute with a fine header that left Athletic Bilbao keeper Unai Simon no chance.
Following the match, Zidane said he thought his countryman was the best striker in France's history.
"For me, yes. What he's doing, he shows it, he's played at Real Madrid for a long time, more than 500 games," Zidane said. "His goals, his trophies, what he's done, they speak for themselves. For me he's the best, yes, it's clear.
"He's a more complete player now but he's always shown it, he isn't a pure No. 9 only thinking about goals. That's why I love him. He doesn't only have that in his head. He links up, passes to teammates, that's what I like in football, and he has both things.
"Today he didn't have a great game but in the end he still scored two goals, that's what Karim has."
Courtois made a huge save down the stretch to keep Real in the lead and Benzema added his second immediately after on the counter to seal the three points for the defending champions of Spain.
Benzema said: "It was a really important game for us. We're on the right track. We attack and defend together as a team. When we're at this level, things turn out well for us."
A third consecutive league win took third-placed Real on to 26 points after 13 games, level with second-placed Atletico Madrid and leaders Real Sociedad but having played two games more than Atletico.
Real had enjoyed a remarkable last week, beating Sevilla and Borussia Monchengladbach before a comprehensive 2-0 win over local rivals Atletico to ease the pressure on Zidane after a stuttering start to the campaign.
The Frenchman made only one change to the starting 11 that had beaten Atletico, bringing in Federico Valverde for the suspended Casemiro.