Barcelona - Real Madrid stumbled to a costly 1-1 draw with Villarreal at home on Sunday to tighten the Spanish league title race.
Cristiano Ronaldo gave Madrid the lead in the 52nd minute with a penalty he earned and converted. But Madrid squandered Ronaldo's league-leading 30th goal of the season when it conceded a goal to Villarreal striker Gerard Moreno.
Carlo Ancelotti's side still had 25 minutes left to push for a winner in a back-and-forth finale.
And even though Ronaldo went close three times to getting a second goal, Madrid also could have lost if not for goalkeeper Iker Casillas' late save to deny Luciano Vietto.
Madrid inched two points ahead of Barcelona with the fierce rivals approaching their clash at Camp Nou in three rounds.
"We dropped two points, but we must make good the advantage we still have," said Ancelotti. "As I said before, the league will come down to the last round."
Besides Barcelona, the other main beneficiary of Madrid's slip was the defending champion.
Atletico Madrid remained seven points adrift in third despite also drawing, 0-0, at fifth-place Sevilla in a tactical battle between managers that ended in a scoreless stalemate.
Villarreal's gutsy performance confirmed its excellent season. It has hold of sixth place in the league, reached the Europa League's last 16, and has hopes of overturning a 3-1 deficit when it hosts Barcelona in their second-leg Copa del Rey semifinal on Wednesday.
"We had worked hard to win, but we leave with the draw and are very satisfied," Moreno said. "We knew that we would have our opportunity."
Madrid had a lackadaisical start and almost fell behind early when Moreno drew a save from Casillas from close range, and Madrid needed Dani Carvajal to block Moi Gomez's follow-up effort with his head in the 12th.
With Ronaldo and Karim Benzema oddly subdued, Gareth Bale led Madrid from the right flank. His floated ball clipped the crossbar in the hosts' best first-half effort three minutes before halftime.
Ronaldo emerged from the break eager to get his 39th goal in all competitions this campaign, and it fell to him after defender Eric Bailly pulled him down in the area.
Ronaldo stroked in the spot kick and appeared to have set Madrid on its way to victory.
But Villarreal coach Marcelino Garcia sent on first-choice striker Luciano Vietto and attacking midfielder Manuel Trigueros— who he had rested until then with the Copa del Rey semifinal in mind.
Villarreal responded with a series of passes that Madrid player Toni Kroos tried to break, but instead he ended up leaving the ball in perfect condition for Moreno to drive a low, long strike beyond Casillas and into the corner of the net.
"It feels incredibly good to draw here against Madrid, and above all considering the way we did it," said Marcelino. "The draw was completely deserved."
Ancelotti threw on strikers Jese Rodriguez and Javier Hernandez, only to see Rodriguez volley the ball wide with goalkeeper Sergio Asenjo off his line.
Casillas was then called upon to reach Vietto's glancing header with four to go.
Ronaldo's bid for last-second heroics never materialized after he sent a header over the bar in stoppage time.
"In the first half we were to slow moving the ball," said Ancelotti. "In the second half we increased our pace and had more chances, but we didn't take advantage of them."
Sevilla remained the only undefeated home side in the league. Even so, it fell seven points behind forth-place Valencia and the last Champions League spot after Valencia won.
Valencia beat Real Sociedad 2-0 at home thanks to Pablo Piatti's double shortly after halftime.
Athletic Bilbao also earned a 1-0 victory at Eibar in a Basque Country derby as it moved into 10th place before its Copa del Rey second-leg semifinal at Espanyol on Wednesday with the tie poised at 1-1.