Rampaging Real reach 100-goal milestone
Barca responded with a 2-0 home win over Athletic Bilbao when Andres Iniesta and Lionel Messi, with a penalty, saw off the side they will play in the King's Cup final in May.
Jose Mourinho's Real, on 78 points, moved a step closer to their first league title in four years with eight matches left ahead of Barca who now have 72.
Fourth-placed Malaga lost 2-0 at home to Real Betis to stay on 47 points.
Ronaldo took his tally to a league-leading 37 and laid on further goals for Karim Benzema and Gonzalo Higuain as Real notched their first La Liga win in Pamplona since they last lifted the title in 2008.
"The thought doesn't even enter my head that we won't win the league," the Portuguese forward told reporters. "We're well situated, there are eight games left and we have to believe we're going to win."
It was a typically intense battle in the compact and intimidating Reyno de Navarra stadium but Ronaldo brought the noise level down almost from the start.
After only seven minutes, he swung a cross to the far post for Benzema to stroke a spectacular volley back into the far top corner before arrowing in a 30-metre thunderbolt himself.
When Higuain scampered away to lob the third just before the break it effectively ended the match as a contest.
Osasuna's Nino nodded one back for the hosts just after the restart but Ronaldo squashed thoughts of a comeback with a freekick that deflected through the wall in the 70th and he crossed for Higuain to head a second soon after.
At the Nou Camp, both sides rested key players with European commitments on their minds, and the champions found it hard going against one of the season's outstanding performers.
Having had only 48 hours to prepare after a Europa League match at Schalke 04, Bilbao started to wilt as half-time approached and Iniesta burst into the area to hammer the opener high into the net.
Bilbao threw on all their forwards in the second half but fell further behind when Cristian Tello was bundled over in the area after 58 minutes, and Messi tucked away the penalty for his 36th league goal of the season.
Real Zaragoza's impressive bid to avoid relegation gathered momentum with a third consecutive win, Angel Lafita poking in a low cross in the last minute for a 2-1 win at fellow strugglers Sporting Gijon.
Cash-strapped Zaragoza climbed off the foot of the standings for the first time since early December, moving up to 18th with 28 points, three from the safety zone.
Racing Santander lost 1-0 at home to Granada after conceding an 89th-minute penalty and slipped one place to 19th with 25 points, the same as Sporting who are now bottom.