Villarreal moved into third place in La Liga after a comprehensive 3-1 win over bottom club Las Palmas on Monday.
Villarreal took the lead a minute before halftime through Nicolas Pépé but Fabio Silva equalised a minute into the second half when he ran on to a sublime pass from Adnan Januzaj and fired home from 15 metres out.
The home side controlled the match throughout but had to wait until the 82nd to get their nose back in front. Second-half substitute Alejandro Baena whipped in a cross from the left and Thierno Barry nodded it past the goalkeeper from close in.
Baena made sure of all three points when he ran from his own half to finish off a counterattack six minutes into stoppage time.
Villarreal could have made the win more comfortable but Baena missed a penalty early in the second half and Barry had a goal disallowed for offside when he needlessly finished off a goal-bound header from Eric Bailly.
The result means Villarreal have 17 points, one behind Real Madrid and four behind table-topper Barcelona. Atletico Madrid are fourth with 16.
Cagliari prevail
Cagliari moved off the bottom of Serie A after a hard-fought 3-2 win at Parma on Monday.
The Sardinian club started the day in last place, one of only two teams yet to record a win. The win took them up to 16th place.
Cagliari refused to buckle when Parma twice cancelled out their lead.
They started the brighter team and took a deserved lead in the 34th minute. The Parma defence failed to clear the ball and Angolan winger Zito Luvumbo crossed for Nadir Zortea to head home unchallenged.
Parma equalised after 62 minutes. Woyo Coulibaly showed some fancy footwork on the left wing before cutting back for Dennis Man to slot home with aplomb.
Romanian midfielder Marin replaced Luvumbo after 73 minutes and two minutes later he put his side ahead again.