The two sides had each taken maximum points from their opening two games but it is Zinedine Zidane's men who now hold the edge, moving on to nine points after a convincing victory at the Estadio Bernabeu.
Real's win was their 15th in succession in the Primera Division, equalling a club record set in the 1960/61 season.
Danilo added a second for Real with a deflected effort after Osasuna goalkeeper Nauzet Perez failed to take control of a ball into the box and Sergio Ramos' header from a corner made it 3-0, and effectively game over, just before half-time.
Reflecting on the decision to bring Ronaldo back into the starting line-up, Zidane told the club's official website: "I didn't come to any agreement with him, he was happy to be with us.
"I enjoyed seeing Cristiano in action, just like everyone else. I want to always have him here with us.
"He played an hour today and we'll have to see whether he plays on Wednesday. It had been almost 60 days since his last game and now we've got seven games in 21 days and we've got to be wary of that."