The Portugal forward took his league tally for the season to 31 goals, netting in his eighth successive game in all competitions, and set up Gonzalo Higuain for Real's third.
Coach Jose Mourinho has said Real's title defence is effectively over but fielded a near full-strength side at San Mames as they moved on to 68 points, 13 short of leaders Barcelona with seven games left to play.
A weakened Barcelona side had earlier cruised to a 3-0 win at struggling Real Zaragoza thanks to two Cristian Tello goals.
Ronaldo stroked a free-kick over the wall and into the top corner after only two minutes in Bilbao, but it sparked a strong response from the hosts who forced Diego Lopez into two fingertip saves before half-time.
Angel di Maria had hit the bar in the first half and the temperature was rising as tackles flew in thick and fast.
Ronaldo was at the centre of much of the attention and reacted by outjumping his marker to thump Xabi Alonso's free kick past Gorka Iraizoz in the 68th minute.
Higuain was played into the space in the area by Ronaldo soon after, and the Argentine settled the match with low shot into the far corner.
Like Real, Barca's priority is to conserve their energies for the Champions League semi-finals in two weeks' time, and they rested a host of players in Zaragoza including Lionel Messi, Andres Iniesta and Gerard Pique.
Making the most of their opportunities were Barca youth academy products Tello and Thiago Alcantara.
Thiago ran the length of the pitch on a counter-attack and fired in off the far post after a one-two with Alexis Sanchez in the 20th minute. The Spanish international then laid on the second for Tello.
His through ball put the pacy left winger clear to lift his shot over Roberto just before halftime, and Tello sped past his marker to squeeze the third inside the far post in the 53rd minute.
Alexis had already hit the crossbar but Zaragoza, who have yet to win in 2013, rarely threatened.
"We miss Messi, obviously, but we have some great players with a lot of football in their boots," Thiago told Spanish broadcaster Canal Plus.
"We would like to win the league as soon as possible but there are still many games left to play. The title isn't won yet."
Radamel Falcao scored twice as Atletico Madrid swept aside visiting Granada 5-0 to keep the pressure on second-placed Real.
The Colombia striker, constantly linked with a move to Europe's top clubs, took his league tally for the season to 24 as Atletico moved on to 65 points in third, three short of next month's King's Cup final opponents.
Atletico were ahead after only four minutes at the Calderon when Diego Costa headed in Koke's cross, and the Brazilian striker set up Falcao for the second after a swift counter-attack.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.