Both teams had chances to make the breakthrough during the La Liga affair, but the stalemate means that Barca remain top of the table on goal difference heading into the final matchday of 2019.
Barca had a half-chance inside the first four minutes when Jordi Alba volleyed a brilliant pass into the path of Luis Suarez inside the Madrid box, but the Uruguay international just could not make contact.
The hosts were the team on the front foot in the early exchanges, but Madrid, who started with a diamond in midfield, were dangerous when they had the chance to break.
Barca had a penalty shout shortly after when Dani Carvajal blocked a cross from Alba, although replays clearly showed that the Los Blancos defender had used his thigh rather than his arm.
The fact that Los Blancos were playing with a high press was making it uncomfortable for Barca, who did not have the blistering pace in the final third to threaten in behind.
Madrid had another half-chance in the 25th minute when Gareth Bale delivered a low cross into Sergio Ramos, whose clever flick just dropped wide of the post. Casemiro then tested Ter Stegen with a drive from distance as Barca continued to come under pressure on home soil.
The hosts did have a big chance to take the lead in the 31st minute when the ball broke for Lionel Messi inside the Madrid box, but Ramos managed to clear the Argentine's effort off the line.
Federico Valverde then struck a brilliant volley just wide of the Barca post as opportunities continued to arrive, with Toni Kroos also firing past the home side's goal 10 minutes before the end of the first period.
Barca had a wonderful chance to take the lead in the latter stages of the first half when Messi picked out the run of Alba with a sensational pass, but the left-back could only feed the ball wide of the far post.
Ter Stegen then saved from Valverde before Suarez just failed to meet a low Antoine Griezmann cross as the final stages of the opening 45 minutes also brought opportunities at either end.
Neither manager looked to their bench at the interval, and there was a similar pattern at the start of the second half with both teams enjoying positive spells in the final third of the field.
Barca had a wonderful chance to make the breakthrough just before the hour when Griezmann did excellently to feed a low cross into Messi, but the Argentine got his contact all wrong and the chance evaporated.
Bale was next to come close as the Wales international struck the side-netting with a thumping effort in the 68th minute having been found by the impressive Valverde.
Thibaut Courtois had to keep out a strike from Frenkie de Jong in the 72nd minute before Madrid had the ball in the back of the net courtesy of a smart finish from Bale. The linesman's flag was raised, though, and a subsequent VAR check chalked the effort off.
Ansu Fati was then introduced for the hosts, who were on the front foot in the five minutes of added time at the end of the contest.
Neither team could fashion a clear chance in stoppage time, though, meaning that the clash finished goalless after an entertaining 90 minutes of football.
Barca will end their 2019 with a home game against Alaves on Saturday afternoon while Madrid will close the year with a clash against Athletic Bilbao at the Bernabeu on Sunday night.
BARCELONA (4-3-3): Ter Stegen; Semedo (Vidal 55'), Pique, Lenglet, Alba; Roberto, Rakitic, De Jong; Griezmann (Fati 83'), L Suarez, Messi
REAL MADRID (4-1-2-1-2): Courtois; Carvajal, Ramos, Varane, Mendy; Casemiro, Kroos, Valverde (Rodrygo 80'), Isco (Modric 80'); Bale, Benzema