Andriy Lunin produced a string of fine saves as Real Madrid held on to a 1-1 draw at Cadiz, who dropped into the relegation zone as a result.

With Real Mallorca securing a dramatic win over Rayo Vallecano, only a victory at the Nuevo Mirandilla would have kept Cadiz out of the relegation zone, but Lunin – standing in for Thibaut Courtois – frustrated them.

Mariano Diaz's early Rodrygo-inspired opener was a sign of things to come in a thrilling first half, which ultimately ended level thanks to Ruben Sobrino's emphatic – and deserved – equaliser eight minutes before the interval.

Cadiz were comfortably the more threatening side in the second period but failed to capitalise on their chances, including a penalty that Lunin conceded and then saved.

Their future will be determined on the final day of the season.

Starting in place of Vinicius Junior for the champions, Rodrygo embarked on a mazy run that his compatriot would have been proud of before prodding the ball to Mariano for a fifth-minute tap-in.

That lead was almost wiped out soon after, but Nacho Fernandez got back to make a vital interception before Lucas Perez could pounce on Negredo's pass.

Lunin's fine save then denied Oussama Idrissi an equaliser, but the goalkeeper was helpless a few moments later as Sobrino smashed in off the crossbar from 16 yards following a weak Eder Militao clearance.

It remained a similarly open contest after the break and Cadiz wasted a glorious chance to take the lead, with Lunin saving Negredo's penalty after he had clumsily fouled the Madrid youth product.

Lunin acrobatically saved a goal-bound Negredo header soon after, with the Ukrainian's heroics enough to earn Madrid a point.