An awful first-half display from Madrid saw the visitors create a string of chances. Sergio Ramos cleared veteran striker Alvaro Negredo's shot off the line inside the first two minutes, Negredo headed just wide and Thibaut Courtois saved Cala's long-distance effort before Anthony Lozano gave Cadiz the lead with 16 minutes gone.
Coach Zinedine Zidane made four substitutions at half-time and his side improved somewhat after the break. Vinicius Junior headed one of their better opportunities off target, Luka Jovic had a goal ruled out for offside and Karim Benzema hit the crossbar, but Madrid remained unable to break down a disciplined Cadiz defence.
There were few positives to take from this dreadful performance, the first of seven games for Real Madrid in three weeks including next weekend's Clasico. The second-half display was marginally better than the first, but Madrid never really looked like turning this match around.
There was a sloppy, listless feel to Real Madrid in the first half here, conceding possession and chances far too easily. It was no surprise when they went behind -- and the only subsequent shock was that they didn't concede a second before half-time. Madrid's defence has mostly looked solid this season, but they were tormented here by the Cadiz strike partnership of Negredo and Lozano.
Sergio Ramos' injury -- with the captain seen wrapping his knee in ice after being substituted at half time -- is also a major concern ahead of El Clasico. Ramos' outsized influence on the team will be sorely missed at Camp Nou if he is indeed ruled out.
Manager rating out of 10
5 -- Zinedine Zidane made four changes to the team that beat Levante 2-0 before the international break with Toni Kroos back from injury and Marcelo, Isco and Lucas Vazquez coming in. The selection backfired, with the latter two players especially disappointing.
The first half was a disaster and Zidane, to his credit, reacted at the interval with a quadruple change. The result was a marginal improvement, with fewer chances conceded and more created, but it wasn't enough to affect the outcome.
Player ratings (1-10; 10 = best, players introduced after 70 minutes get no rating)
GK Thibaut Courtois, 6 -- A mixed night. Made a straightforward early save from Lozano followed by a much better one from Cala. Could have done better with Lozano's goal, and a mistake almost saw Lozano grab a second before half-time.
DF Nacho, 6 -- Up against his brother Alex on the left of the Cadiz midfield, he fouled his sibling to win a second-half header on goal. Otherwise the injured Dani Carvajal's attacking impetus was badly missed.
DF Raphael Varane, 7 -- Headed just wide from a corner before half-time and showed his incredible pace to get back and halt a Cadiz counter later on. The defence as a whole was poor, but Varane was probably the best of a bad bunch.
DF Sergio Ramos, 6 -- An outstanding early clearance off the line from Negredo, but lost Lozano for the goal. Hurt his knee inside half an hour and had to be replaced at the break.
DF Marcelo, 5 -- It's becoming increasingly hard to justify the games Marcelo plays ahead of Ferland Mendy. There's no question the defence is weakened as a result, as we saw here.
MF Toni Kroos, 5 -- The German's passing radar was unusually off, misplacing an early ball to give Negredo the first chance of the game. Brought off with 15 minutes left as Madrid chased an equaliser.
MF Luka Modric, 5 -- A rare off night for a player who has been incredibly consistent in recent months.
MF Isco, 4 -- Anonymous, not for the first time this season. Zidane is giving the midfielder chances to find his form, but he isn't taking them.
FW Lucas Vazquez, 4 -- Gave the ball away for Lozano's early goalscoring opportunity, and then shot over the bar. Otherwise very quiet, and subbed off at half-time.
FW Vinicius Junior, 5 -- His best first-half moment was an overhead kick which was goal-bound but lacked power. Shot over the bar twice early in the second half and should have done better with a header. Vinicius at least offered pace and urgency here when others didn't.
FW Karim Benzema, 6 -- A quiet game, as he found it difficult to find space to operate in. Hit the bar late on.
DF Eder Militao, 6 -- Replaced the injured Sergio Ramos and tightened up the defence.
MF Casemiro, 7 -- Came on for the ineffectual Isco. Always missed when he's left out.
MF Federico Valverde, 6 -- Brought on to replace Modric and didn't make an impact.
FW Marco Asensio, 7 -- An instant improvement on Lucas Vazquez, but still didn't do enough.
FW Luka Jovic, N/R -- Zidane's final change, looking for a goal, and had one ruled out for a clear offside.