All three goals came in a six-minute spell midway through the second-half as strikes from former Liverpool striker Iago Aspas and Jonny either side of Marcelo's reply for Madrid handed Celta a famous win.
Real can still salvage their quest for a first ever treble of Cup, La Liga and Champions League, but now need to score at least twice when the visit Balaidos for the second leg on January 25.
"I am not worried," insisted Real Madrid boss Zinedine Zidane.
"It is not a good moment for us, two defeats (in a row), but we can overcome this. We still have the return leg to go.
"Losing 2-1 the result is not in our favour, but we know we can go there and change that."
Celta Vigo boss Eduardo Berizzo said the Galicians' first win at the Bernabeu in a decade didn't surprise him, but that they would need to be even better next week on home soil to finish the tie off.
"None of my team's victories surprise me. It is a huge win, coming to a place like this and facing the best team in the world, but we believed we could do it," said Berizzo.
"We are happy to win, but it obliges us to play even better in Vigo because we are facing a brilliant opponent and it is the toughest footballing test."
Cristiano Ronaldo was making his first appearance in the Copa del Rey for two years as Zidane named a strong side with just four changes from the team that was beaten for the first time in 41 matches at Sevilla on Sunday.
However, with temperatures plummeting below zero and the match not kicking off until 21:15 local time, the subdued atmosphere at the Bernabeu was matched by a lacklustre Madrid display.
Ronaldo had to wait until 33 minutes for his first clear sight of goal, but failed to make a clean connection with Sergio Ramos's cut-back and Jonny was able to clear from underneath his own crossbar.
An unfortunate hand injury to Marco Asensio as he was accidentally trod on by Facundo Roncaglia ensured Ronaldo moved from the centre of the Madrid attack back onto his habitual position on the left as Alvaro Morata was introduced early in the second-half.
Morata has scored four times as a substitute this season, and nearly had an instant impact when he blazed over when well-positioned inside the area.
Instead, it was Celta who got the opener as the game sprung into life in the final 25 minutes.
Marcelo's miscued clearance from Theo Bongonda's cross only found the grateful Aspas alone inside the area and he rifled the ball high past Kiko Casilla for his 15th goal of the season.
Madrid rallied as they so often have this season when Marcelo made amends with a brilliant volley from the edge of the box.
However, no sooner had Celta kicked-off when they were back in front as a huge hole appeared in the middle of the Madrid defence and Aspas teed up Jonny to bear down on goal and slot coolly past Casilla.
Zidane threw on Karim Benzema for the hapless Danilo as the hosts chased the game in the final 10 minutes.
And the Frenchman's daring approach should have been rewarded with a second equaliser, but Benzema somehow blazed over with the goal at his mercy seven minutes from time meaning Madrid have it all to do at Balaidos next week.
In the night's other tie, two late goals from Ibai Gomez handed Alaves a 2-0 win at second division Alcorcon.