An early goal from David Alaba put Madrid ahead, and Ante Budimir equalised just two minutes later, before Marco Asensio put the visitors back in front in a busy first half at El Sadar. Lucas Vazquez made sure of the win for Madrid with a goal deep into stoppage time.
Benzema was denied twice from the spot by keeper Herrera in seven second-half minutes, but leaders Madrid got the win nonetheless to move to 78 points with five games left to play, 17 clear of Atletico Madrid, with Barcelona and Sevilla both in action on Thursday.
- La Liga on ESPN+: Stream LIVE games and replays (U.S. only)
- Don't have ESPN? Get instant access
"The game was very good, above all the second half," Madrid manager Carlo Ancelotti told Movistar afterward. "Everyone showed commitment, quality, we're very satisfied. Now we have a week to prepare the next game, the semifinal. The team is in good form. Let's hope we keep going."
Osasuna put the league leaders under some early pressure, but it was centre-back Alaba who put Madrid ahead in the 12th minute. Ceballos found Benzema with a clever ball into the box, and the forward crossed for Alaba to finish at the second attempt.
Two minutes later, the home side were level, Chimy Avila's cross deflecting off defender Nacho to find Budimir waiting at the far post. The Croatian forward had the ball in the net for a second time on 32 minutes, but the goal was disallowed for offside.
Alaba had a spectacular long-range shot saved by Herrera before Asensio -- continuing his best ever scoring season -- made it 2-1 in the 45th minute. Eduardo Camavinga found Ceballos, and when his effort was saved, Asensio was on the spot to score his ninth league goal this campaign.
Alaba went off at half-time with an apparent thigh injury, in bad news for Madrid ahead of their Champions League semifinal first leg with Manchester City next week, and was replaced by Dani Carvajal. Speaking following the match, Ancelotti said he was "optimistic" that the injury was not a serious one.
Madrid were awarded their first penalty of the night in the 52nd minute when Avila resorted to handling the ball after being beaten by Rodrygo. Benzema's attempt was well saved by Herrera, and then seven minutes later when Rodrygo was fouled by Nacho Vidal in the box, Herrera denied Benzema again.
"If we'd had another penalty he'd have taken it," Ancelotti said afterward. "If we get another penalty, he'll take it. Who takes a penalty can miss. He played an extraordinary game, he likes to score but he played well for the team."
The game had to be briefly paused by referee Ricardo de Burgos with 10 minutes left after an object was thrown from the crowd at goalkeeper Thibaut Courtois, and Madrid were unable to take a number of late chances before Vazquez gave them a two-goal cushion and a fourth league victory in a row.