Zinedine Zidane made one change from the win over Eibar after injury to Lucas Vazquez made space for Rodrygo. Martin Odegaard lined-up against his parent for club for the visitors.
A dream start for Sociedad is exactly what happened two minutes from kickoff when Willian Jose capitalised on a dismal pass from Sergio Ramos to round Thibaut Courtois for an easy finish.
Los Blancos were kept on the back foot in the 14th minute when Mikel Oyarzabal played Odegaard in the area who then set-up Jose for a first-time finish which Courtois parried successfully.
Karim Benzema drew the home side level with virtually their first attack eight minutes to halftime after bringing down an in-swinging free-kick from Luka Modric to tuck past Alex Remiro.
Then Modric brought down a cross from Benzema two minutes after halftime and took the ball outside the area to feed Federico Valverde, who applied a calm finish.
That seemingly took the wind out of the visitors sail as the home side controlled every area with top-level passing and tactical discipline.
Odegaard picked up a looping ball around the area before launching a curling shot, which Kepa tucked behind in the 60th minute.
Gareth Bale arrived from the dugout ten minutes later as Los Blancos pushed for more goals with Rodrygo making way for the Welshman.
The third came in the 74th minute when Modric got on the end of a knock-down from Benzema in the danger area to volley past Remiro.
Real took the foot of the accelerator pedal thereafter to claim a sixth successive win across all competitions whilst staying level atop the standings with FC Barcelona.