Both sides had shots cleared off the line and Real’s Gareth Bale did put the ball in the net after the interval but his strike was narrowly ruled out for offside and the fixture ended scoreless for the first time since November, 2002.
The draw left Barca top on 36 points after 17 games, with Real also on 36, five clear of third-placed Sevilla.
The game was rescheduled from Oct 26 due to the political turmoil that gripped Catalonia after separatist leaders were given lengthy jail sentences two months ago and was played amid a protest in favour of independence near the stadium.
Loud chants of “independence” and “freedom” greeted kick-off while many supporters held up flags reading “Spain Sit and Talk” distributed by protest organisers in a call for dialogue between the central government and Catalonia.
Local police reported confrontations between officers and protesters outside the ground while play was briefly stopped in the second half when a number of beach balls were thrown on to the pitch amid more chants for freedom for the jailed leaders.
The action on the pitch did not quite live up to the billing or the tense atmosphere in the stands as Barca failed to get going throughout the game and Real bossed the first half.
Zinedine Zidane’s side fired 12 shots at the hosts’ goal before the interval, coming closest with a Casemiro header which Gerard Pique scrambled off the goalline, while they also had two penalty appeals waved away for challenges on Raphael Varane.
Barca looked short of ideas, with Lionel Messi being their only source of inspiration.
The Argentine could have broken the deadlock in the first half but Real captain Sergio Ramos slid to the floor to block his goal-bound shot.
Messi later teed up Jordi Alba with a scooped pass but the defender fired just wide, while Barca’s all-time top scorer was uncharacteristically sloppy at times and miscontrolled a clear opportunity to strike at goal in the second half.