Captain Sergio Ramos scored a stoppage-time equaliser to extend Real Madrid’s unbeaten start to the season and deny Barcelona victory in a bad-tempered El Clasico.
Luis Suarez’s glancing header from Neymar’s left-wing free-kick put Barcelona ahead at the Nou Camp.
But in a frantic ending, Cristiano Ronaldo went close before Ramos headed home Luka Modric’s free-kick to earn a point for Zinedine Zidane’s La Liga leaders.
Leaders Real remain six points clear of defending champions Barca after 14 matches.
Barca were moments away from reducing the gap to three points when Real captain Ramos pounced to make it 33 games without defeat for his side.
Real are approaching the winter break in the driving seat, Barca having gone three matches without a league win.
Barca forward Neymar, who was one of six players booked, will be suspended for next Saturday’s match at Osasuna.
The hosts started slowly and managed only one attempt on goal – a Lionel Messi free-kick was comfortably gathered by Keylor Navas – in a scrappy first half.
In contrast, Ronaldo had three attempts in the opening 45 minutes as Luka Modric dominated for Real in midfield.
While far from their fluid best, Barca were better after the break and went in front when Raphael Varane conceded a free-kick just outside his area and Suarez nodded home from close range.
Messi, who has now gone six games without scoring against Real in all competitions, missed a great chance to double the lead after a lovely pass from substitute Andres Iniesta, on his return from injury, before Ramos had the final say.
The 30-year-old defender is establishing a reputation for scoring crucial late goals in big games.
Ramos scored a 93rd-minute equaliser against Atletico Madrid to send the 2014 Champions League final into extra time before Real won.
He also forced extra time with a stoppage-time equaliser in the 2016 Super Cup final, which Real also went on to win.