La Liga leaders Barcelona threw away a two-goal lead as they failed to take full advantage of Atletico Madrid's slip-up, drawing 2-2 at Villarreal on Sunday.
With Atletico suffering a surprise 2-1 defeat to Sporting Gijon on Saturday, Barca had the chance to stretch their advantage at the top to 11 points.
And Luis Enrique's side looked to be in pole position to do just that as Ivan Rakitic's fifth league goal of the season put them ahead before Neymar doubled the lead in contentious fashion.
After Villarreal coach Marcelino had been sent to the stands, Neymar made it 2-0 with a chipped penalty, putting their recent woes from the spot to rest following a seemingly harsh decision to punish goalkeeper Sergio Asenjo for a foul on the forward.
But Luis Enrique's decision to take off Gerard Pique and Arda Turan early in the second half proved pivotal as Barca struggled to reorganise at the back.
Cedric Bakambu took advantage by netting from close range in the 57th minute, with the comeback completed six minutes later when Pique's replacement Jeremy Mathieu bundled into his own net.
Villarreal almost broke the deadlock inside two minutes thanks to excellent work down the left from Bakambu, whose cross was deflected against the inside of the post.
Rakitic fired wide in the 10th minute as he failed to take advantage of Barca's first real attacking opportunity.
But 10 minutes later the Croatia international atoned for that earlier miss, opening the scoring by tucking home with a simple finish after the hosts had failed to deal with a Lionel Messi free-kick.
Having seen his side's decent start wasted, a furious Marcelino was sent to the stands for protesting a yellow card shown to Villarreal midfielder Bruno.
And Marcelino's mood will have got worse in the 40th minute when referee Jose Maria Sanchez Martinez pointed to the spot, adjudging Asenjo to have brought down Neymar despite replays suggesting minimal contact.
Neymar stepped up to take the penalty and converted with consummate ease as he deceived Asenjo with a dinked effort that the Villarreal goalkeeper - who elected to dive to his right - could do nothing to prevent from crossing the line.
Manu Trigueros curled over nine minutes after the restart as Villarreal pushed to pull a goal back that arrived in the 57th minute courtesy of Bakambu shortly after Pique and Turan had been withdrawn.
Former Barcelona B winger Denis Suarez hurdled his way over a series of challenges and Claudio Bravo could only parry his effort as far as Bakambu, who tucked home at the near post to give Villarreal hope.
Bravo was then called into action again to deny Samu Castillejo, with Roberto Soldado heading wide from the resulting corner.
Asenjo produced a fine diving save to stop Neymar from curling in his second to re-establish Barca's command on the hour mark, and Luis Enrique's men were pegged back shortly after.
Mathieu was the victim of a moment of misfortune, the Frenchman unwittingly deflecting a corner from the right into the bottom-left corner to restore parity for the hosts.
Rakitic spurned a glorious chance to put Barca back in front, slicing over eight minutes from time, yet, although the visitors could not regain the lead, they are nine points clear at the top and are now 39 games unbeaten in all competitions.