Zinedine Zidane's men were belatedly returning to domestic action after their unsuccessful Champions League exploits at the end of last season and had Martin Odegaard in their starting line-up.
The 21-year-old was recalled by Madrid after spending the 2019-20 campaign on loan at Sociedad, yet his former side gave as good as they got in terms of genuine chances.
Although veteran David Silva – signed to replace Odegaard - made his Sociedad debut from the bench after recovering from coronavirus, there was no breakthrough before the final whistle.
Madrid had their hosts under pressure from the outset but did not threaten to capitalise on their dominance until late in the first half.
Alex Remiro was scarcely troubled before the 38th minute, yet Karim Benzema's harrying prompted a rushed pass from the goalkeeper straight to Vinicius Junior, who quickly fed Madrid's number nine. Benzema rounded Remiro and looked certain to score but skewed an off-balance effort across the face of goal.
Remiro's opposite number Thibaut Courtois was far more impressive as Alexander Isak bore down on goal amid a rare Sociedad foray, his effort turned away by the toe of the former Chelsea man.
Courtois was beaten within two minutes of the restart, but Ander Barrenetxea's cushioned volley bounced agonisingly beyond the bottom-right corner.
Ferland Mendy was fortunate to escape a second booking for a rugged challenge on Portu, before Remiro made a meal of Dani Carvajal's 25-yard blast despite convincing stops to keep Benzema and Toni Kroos at bay.
A series of substitutions for the either side - including the arrival of Silva for the hosts and a Madrid debuts for Marvin Park and Sergio Arribas - could not prompt the opener.
What does it mean? Dropped Casemiro still key
Madrid are defending champions and have not completed a single signing, so it came as some surprise that Zidane made a big selection call, dropping Casemiro to the bench for the returning Odegaard.
Los Blancos won just one of the three league games Casemiro missed last season, while he was absent for their Copa del Rey exit to Sunday's opponents – a match in which Odegaard netted.
The incoming 21-year-old was key to Zidane's game plan. Odegaard's average position was almost in line with Benzema's as he led the press and contributed two key passes, but the result did not follow and Madrid turned to Casemiro 20 minutes from time.
Merino makes his mark
While it was a mixed night for Odegaard, Mikel Merino - his former midfield partner - shone for La Real. The silky Spain international proved he can do both sides of the game, making two tackles, four clearances, an interception and three blocks, as well as attempting more passes in the opposition half (32), having more touches (65) and competing in more duels (18) than any other team-mate.
Rodrygo the right man?
Madrid have moved on Gareth Bale and James Rodriguez in the transfer window, but the identity of their regular right winger appears no clearer. Rodrygo started in that role but struggled to make an impact, completing neither of his two crosses and a team-low 64 per cent of his overall passes, although he did draw four fouls.
Key Opta Facts
6 - Real Madrid have drawn 0-0 in their opening LaLiga fixture for the sixth time and the first since 2015 under Rafael Benítez (0-0 vs Real Sporting de Gijón at El Molinón). Brake. pic.twitter.com/l2AqbaJyaX— OptaJose (@OptaJose) September 20, 2020
- Madrid are the first team to play a LaLiga game with four different players born in 2000 or later (Vinicius, Rodrygo, Marvin and Arribas).
- Odegaard has played his second LaLiga game for Madrid and the first in the starting XI, 1,947 days since his debut in the competition (versus Getafe in May 2015).
- Benzema has become the third non-Spanish player to reach 350 appearances for Madrid in LaLiga, after Roberto Carlos (370) and Marcelo (358).
It does not get much easier for Madrid as they go to Real Betis on Saturday. The Seville side have six points from two games. Sociedad are at Elche on the same day.