The away side started the match brightly, but Ronaldo gave Real an early lead as he fired home following Karim Benzema's pin-point left-wing delivery, before the Portuguese returned the favour for his French team-mate for the second soon after.
Real coach Carlo Ancelotti stated before the match that he would not rotate Ronaldo - who has now scored nine goals in his last four games - while he is in such a rich vein of form, and the former Manchester United man repaid that faith by slotting in a penalty for his 161st La Liga goal and Real's third of the game on 26 minutes.
World-record signing Gareth Bale set up Sami Khedira for the fourth goal before the break, and although Antoine Griezmann scored in a fifth successive match for Sociedad after the break, Ronaldo ensured he would leave with the match ball by burying a 76th minute free-kick.
Ancelotti made three changes to the Real side that won 3-2 at Rayo Vallecano in their last league match, with the most notable switch seeing Alvaro Arbeloa replacing the suspended Sergio Ramos, while the visitors made four alterations from their 5-0 win over Osasuna.
Ronaldo struck the crossbar early on, but in the eighth minute he would not be denied as Benzema floated a clever cross to him at the far post where he smashed ball past the helpless Claudio Bravo.
It did not take the hosts long to double their lead as Ronaldo returned the favour for Benzema, laying the ball off for the France international to fire low past Bravo in the 18th minute.
Sociedad looked in danger of getting humiliated by this point, and things went from bad to worse when Markel Bergara conceded a penalty for handball on 26 minutes, allowing the irrepressible Ronaldo to net his second of the game.
The hosts continued to run riot thereafter and got their fourth nine minutes before the break as Bale passed to Khedira on the edge of the area and the German blasted past Bravo.
The second half started at a significantly slower tempo as Real had already all but secured the three points, while the visitors looked determined to keep the score as respectable as possible.
Jagoba Arrasate’s men were clearly aggrieved not be awarded a penalty on the hour mark as Diego Lopez tripped Griezmann but, just a minute later, the Frenchman latched on to Carlos Vela’s lofted pass and cleverly looped the ball over the goalkeeper to pull one back.
The lively Griezmann was in again shortly after, but after bursting behind the Madrid defence he could only poke a close-range effort just past Lopez’s right-hand post.
Ronaldo killed off any slim hopes of a late comeback as he drove in his 16th league goal of the season from a set-piece 16 minutes from time, moving Real on to 31 points, two behind Atletico Madrid and three adrift of leaders Barcelona.
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.