Alexis Sanchez had given the hosts a deserved early lead, but goals just before and after half-time from Dani Parejo and Pablo Piatti turned the game on its head.
Lionel Messi quickly levelled from the penalty spot, only for Paco Alcacer to strike the winner low past Victor Valdes five minutes later.
And Barca’s day was summed up 13 minutes from time when Jordi Alba was sent-off for a second bookable offence.
Both Atletico Madrid and Real Madrid now have the chance to end Barca’s record run of 59 league games at the top of the table when they face Real Sociedad and Athletic Bilbao respectively on Sunday.
It was a stunning turnaround from Valencia after a dominant display from Barca in the opening half hour and Juan Antonio Pizzi hailed his side’s reaction after the break.
“We noticed at half-time that we needed to compete more and we corrected that in the second-half,” he said.
“In the second-half we were very good and dominated the game. We didn’t suffer that much at the back and every counter-attack we had looked dangerous.”
Barca boss Gerardo Martino, meanwhile, admitted his side had paid for not killing off their opponents in that opening spell.
“I was anxious to consolidate our early advantage because the game is not over until the referee blows the final whistle and it felt like we stopped after half an hour,” he said.
“This week I said that at this stage of the season you pay a heavy price for any errors and today we committed a lot of errors.”
The Argentine believed Valencia’s equaliser just before half-time was the turning point in the match.
“Probably Valencia’s first goal caused us to lose a bit of confidence. In the second-half that made us a bit more desperate, which in turn made us commit more errors. We seemed like one team in the first-half and another in the second.”
Barca had gotten off to the best possible start as Sanchez’s shot looped up over the stranded Alves after just seven minutes.
The hosts should have then built on their lead as Diego Alves made a brilliant save to prevent Sanchez doubling his tally with a header from point-blank range, whilst Sergio Busquets, Messi and Dani Alves all came close.
However, Barca’s intensity dipped after the opening half hour and Valencia missed a great chance to equalise when Ricardo Costa headed wide when presented with an open goal after Victor Valdes completely misjudged a corner from the right.
Valencia did level just before the break as Parejo swept home Sofiane Feghouli’s low cross.
And the visitors went in front just three minutes after the restart as Piatti took advantage of more hesitation by Valdes to loop a header into the net.
Barcelona were handed a reprieve six minutes later when referee Pedro Perez Montero wrongly awarded a penalty for handball against Costa when the ball appeared to have struck the Valencia captain’s shoulder.
Messi showed no mercy form the spot as he rifled high into the roof of the net to register his first league goal in nine games stretching back to September.
However, it took Valencia just five minutes to retake the lead as Alcacer slotted home another intelligent cut-back from Feghouli.
Barca boss Martino then introduced Andres Iniesta in a bid to turn the game around, but it made little difference as his flustered side failed to find any sort of rhythm.
Their chances to taking anything from the game appeared to disappear with Alba as he was sent-off against his former club for a bodycheck on Feghouli.
But Messi had one final chance to rescue a point as he danced past a posse of Valencia defenders before slotting just past the far post in stoppage time.