Injuries to Luka Modric and Thibaut Courtois left Madrid depleted at the Santiago Bernabeu, but they took the lead in fortunate fashion when Vinicius Junior's cross beat Sergio Herrera.
Courtois' replacement Andriy Lunin was caught out by Kike Garcia's header as Osasuna equalised shortly after half-time, but the hosts were awarded a penalty when David Garcia pushed Benzema, earning himself a red card.
However, Benzema hammered his spot-kick against the crossbar as Osasuna clung on, ending Madrid's 100 per cent record in LaLiga this season.
Osasuna gave as good as they got during a frantic opening, twice going close through tricky winger Abde Ezzalzouli on the break.
Benzema almost opened the scoring in spectacular fashion from Vinicius' cross after 37 minutes, clipping the left-hand post with an acrobatic volley, but Madrid did not have to wait long for its opener.
Vinicius' in-swinging cross evaded Benzema before nestling in the bottom-right corner after 41 minutes, with a VAR review awarding the goal after ruling Benzema was not interfering with play from an offside position.
Osasuna needed just five minutes to level after the break, however, as Kike's glancing header looped beyond Lunin to find the top-left corner, stunning the Bernabeu into silence.
Just as Madrid appeared to be running out of ideas, Garcia's clumsy foul on Benzema saw the defender dismissed and handed the France striker the chance to win the match with 11 minutes left.
However, the Ballon d'Or favourite stuck the bar with a poor effort before heading Rodrygo Goes' stoppage-time cross wide as Osasuna held on.