Zinedine Zidane's side fell behind to Fedor Smolov's seventh-minute goal but were on course for all three points thanks to an equaliser from Toni Kroos and Sergio Ramos's penalty, which was earned by the returning Eden Hazard.
However, former Barcelona midfielder Denis Suarez set up fellow substitute Santi Mina to equalise five minutes from time and Real were unable to find a late winner, leaving them just a point ahead of Barca at the top of the table.
Celta had started the game in the relegation places after Mallorca's win over Alaves on Saturday, but the point lifts them back above Mallorca on goal difference.
The visitors took the lead in the seventh minute after Iago Aspas threaded a superb pass through to Smolov, who only joined the club on loan from Lokomotiv Moscow on January 30.
The 30-year-old Russian controlled the ball with his first touch and swept the ball past Thibaut Courtois with his second to score his first goal in Spanish football in style.
Real tried to respond and Casemiro fired a shot over the bar from just outside the area, while Gareth Bale's audacious flick from Hazard's pull back was also off target.
And Celta could have doubled their lead just two minutes before the interval as Joseph Aidoo was left unmarked from Lucas Olaza's corner, but saw his header well saved by Thibaut Courtois.
Real had failed to manage a single shot on target in the first half but quickly demonstrated a greater attacking threat in the second period and thought they had levelled in the 49th minute, only for Ramos' volley from Bale's cross to be ruled out for offside.
However, it took just three more minutes for the home side to get back on level terms as Marcelo got to the byline and pulled the ball back for Kroos to slide a left-footed shot into the bottom corner from 14 yards.
The momentum has switched firmly in favour of Zinedine Zidane's side and they went in front in the 64th minute when Hazard was brought down in the area by goalkeeper Ruben Blanco and Ramos made no mistake from the penalty spot.
Hazard, who was playing for the first time since injuring his ankle in November, lasted 73 minutes before being replaced by Vinicius Junior, but it was two of Celta's substitutes who combined for the game's final decisive moment.
A stylish passing move culminated in Suarez flicking a pass with the outside of his right foot into the path of Santi to slot home beyond Courtois and earn his side a point.