Lionel Messi’s 500th career goal could not prevent stumbling leaders Barcelona suffering a third successive La Liga defeat for the first time since 2003.
Ivan Rakitic deflected Guilherme Siqueira’s cross-shot into his own net to give Valencia a shock lead.
Santi Mina then finished a terrific move by slotting in a second goal in first-half stoppage time.
Messi ended a club goal drought of 515 minutes, but Barcelona now only lead Atletico Madrid on goal difference.
Messi’s big moment falls flat
When Messi scored for Barcelona in a Champions League victory over Arsenal on 16 March, few would have expected he would have to wait more than a month to find the net for his club again.
The forward did score his 499th career goal in the meantime – a penalty for Argentina in a 2-0 World Cup qualifying win over Bolivia on 30 March – but his form for Barca has dipped at the same time as their fortunes.
Messi was denied three times in the first half as the home side created a host of chances without taking advantage.
Eventually, he did score – turning in Jordi Alba’s pull-back from the left – but with Barca two goals down by that stage, there was little reason for the reigning world footballer of the year to celebrate his landmark achievement.
This was some transformation for a Valencia side humiliated 7-0 on their last visit to the Nou Camp, in the first leg of a Copa del Rey semi-final on 3 February.
Pako Ayestaran, who replaced the sacked Gary Neville as manager on 30 March, put out a line-up with far more discipline and spirit than they showed on that miserable night.
Shkodran Mustafi, once part of the youth set-up at Everton, was pivotal to their victory. The German centre-back was outstanding in frustrating Barcelona’s much-vaunted forward line for much of the night.
Siqueira, on loan from Barcelona’s title rivals Atletico Madrid, also had a significant role to play for Valencia.
The Brazilian full-back broke forward on to Andre Gomes’ pass and looked as if he would be credited with the opening goal as his delivery from the left was fumbled in at the near post by Claudio Bravo. Television replays, though, showed that Rakitic had got the decisive touch.
Mina, who scored when the reverse fixture ended 1-1 in December, then took advantage to place Dani Parejo’s through pass inside Bravo’s far post as Sergi Roberto failed to track his run.
More to follow.