Karim Benzema got the hosts off to the perfect start when he headed in Luka Modric's cross after 19 minutes.
Jese Rodriguez then gave Madrid breathing space in the tie when he chipped home Cristiano Ronaldo's pass after half-time.
And Madrid were only denied a third in comic circumstances moments later as Ronaldo deflected Gareth Bale's goalbound effort behind.
Real boss Carlo Ancelotti named a strong side with Bale returning to the starting line-up for the first time in four games following a calf injury.
Jese was also given a rare chance from the start and he thought he had won his side a penalty on 16 minutes when he went down under a challenge from Osasuna goalkeeper Asier Riesgo.
However, after originally pointing to the spot, referee Jesus Perez Montero reversed his decision and harshly booked Jese for diving.
Minutes later Madrid were in front as Benzema flicked home Modric's free-kick to register his 99th goal for the club.
Ronaldo passed up a great chance to double the advantage when he fired straight at Riesgo after a lovely scooped pass from Bale as Madrid began the second-half with more purpose than they ended the first.
And the hosts took advantage of some woeful Osasuna defending to make it 2-0 just before the hour mark as Benzema and Ronaldo combined to tee up Jese to loft the ball over Riesgo.
That was to be the Spanish international's last major involvement as he pulled up injured shortly afterwards and was replaced by Isco.
Bale should then have had his first goal since November as his goalbound shot from Benzema's cut-back was deflected behind by Ronaldo.
But despite failing to add to their tally Madrid will be strong favourites to set up a quarter-final meeting with Alcorcon or Espanyol when they travel to Pamplona for the second leg next Wednesday.