Real Madrid came from 2-0 down to record a remarkable win at Villarreal, a victory that saw them return to the top of La Liga.
The pivotal moment came at 2-1 when Villarreal’s Bruno was adjudged to have handled in the area, although it was disputed if it was intentional.
Cristiano Ronaldo made it 2-2 from the spot after Gareth Bale had headed in Real’s first.
Substitute Alvaro Morata then nodded in the winner seven minutes from time.
Real are top on 55 points, one ahead of Barcelona who beat Atletico Madrid 2-1, and three clear of Sevilla, while Zidane’s side have a game in hand on both of their title rivals.
Villarreal’s Manu Trigueros lashed home from inside the area to put the hosts ahead five minutes after the break and Cedric Bakambu doubled the lead in the 57th with a fine finish past Keylor Navas, though he was fortunate not to be ruled offside.
Real looked destined for a second loss in a week on the east coast after Wednesday’s 2-1 reverse at Valencia but Bale, making his first start since November, headed a goal back in the 64th before Ronaldo levelled with a penalty 10 minutes later.
Morata then headed Marcelo’s cross under Villarreal’s substitute goalkeeper Andres Fernandez, who had replaced first choice Sergio Asenjo when he sustained a muscle injury after making a stunning save to deny Karim Benzema.