The Portuguese hit his 23rd treble for the capital club as Karim Benzema and Sami Khedria also scored in a rout of Jagoba Arrasate's side.
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 favor for his French teammate for the second soon after.
Madrid 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 to seal his 19th La Liga hat trick.
Ancelotti made three changes to the side that won 3-2 at Rayo Vallecano in its last league match, with the most notable switch seeing Alvaro Arbeloa replacing the suspended Sergio Ramos, while the visiting side made four alterations from the 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 home side long to double the lead as Ronaldo returned the favor 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 Ronaldo to net his second of the game.
The home side 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 three points, while the visiting side 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 defense 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 Barcelona.