Cristiano Ronaldo started to make his first appearance in the competition for two years, but Zinedine Zidane's side – aiming to bounce back from a dramatic late loss at Sevilla that halted their Spanish record unbeaten run – were unable to find a way a way through before the interval.
When the breakthrough arrived it fell Celta's way, Iago Aspas' 15th goal of the season sparking a crazy six-minute period.
Marcelo's spectacular volley levelled matters, but Madrid switched off from the restart and Jonny was the gleeful beneficiary - condemning Zidane to his first home defeat since last February's LaLiga derby reverse against Atletico Madrid.
Madrid forward Lucas Vazquez had an early effort saved, but the hosts showed enough attacking ambition of their own, with Aspas a threat on the break and Theo Bongonda shooting wide having skipped past Raphael Varane's challenge.
Ronaldo, playing as Madrid's attacking spearhead, was still grasping for his best form by the time captain Sergio Ramos failed to make a clean contact from Vazquez's dangerous 26th-minute cross and goalkeeper Sergio Alvarez gathered.
Alvarez's opposite number Kiko Casilla – playing as Keylor Navas took a night out of the firing line – held a thudding drive from Marcelo Diaz after Bongonda instigated Celta's latest attacking raid.
Ronaldo lashed into the net as the whistle went to correctly penalise him for handball and the Ballon d'Or winner was aggrieved to have a 39th-minute penalty appeal turned down.
Marco Asensio was enjoying a rare start for the LaLiga leaders, but an early second-half tangle with Facundo Roncaglia saw him land awkwardly and appeared to leave him with an injured shoulder.
It meant a 53rd-minute introduction for Alvaro Morata, who almost made a telling impact five minutes later as Toni Kroos picked him out in the area to blast just over with Alvarez rooted to the spot.
Madrid's growing threat appeared ominous for Celta, but it Eduardo Berizzo's men who stunningly hit the front in the 64th minute.
Bongonda was the instigator once more, tearing down the left and sending in a wicked cross that Marcelo stopped Daniel Wass from converting with an extravagant volleyed backheel.
That was only sufficient to send the ball to Aspas, who stroked into the centre of the goal as Casilla went to ground.
Marcelo quickly extinguished any blame that could be sent his way when Roncaglia's headed clearance looped up and he lashed in a thunderous volley from the left-hand side of the box.
An astonishing period of play continued when Celta re-established their lead 58 seconds later – Vazquez guilty of ceding possession to Aspas, who played through Jonny to coolly slot home.
Zidane threw on striker Karim Benzema for defender Danilo with 10 minutes to play and Marcelo almost had a second when another rasping strike deflected wide.
Varane glanced narrowly off target from the resulting corner and Benzema spurned a glorious opening from close range, meaning Celta will boast a hard-earned advantage when the sides reconvene at Balaidos next week.
Before that Madrid will look to avoid a fourth consecutive winless outing when they host Malaga in LaLiga on Saturday.