The Blaugrana are now winless in four on the road in LaLiga – the club's worst such run since May 2008 – and a dismal defensive mix-up gifted all three points to surprise package Cadiz.
Alvaro Gimenez struck a scrappy, contentious opener with just eight minutes played, but the home side, which enjoyed a stunning win away at Real Madrid earlier this season, was pegged back by Pedro Alcala's own goal before the hour mark.
Rather than protect its point, though, Cadiz rallied again and was rewarded when veteran substitute Alvaro Negredo seized possession from Marc-Andre ter Stegen to restore the home advantage 44 seconds after his introduction.
Barca had 81 per cent of possession but could not break down the spirited hosts, who moved fifth as Ronald Koeman's side fell 12 points off the pace set by Atletico Madrid.
Cadiz had peppered the Madrid goal early on in October to stun the champion, taking the lead with its seventh effort inside 16 minutes, but its sole first-half shot proved enough to be in front at the interval this time.
Oscar Mingueza went to ground in a tussle with Marcos Mauro from a corner and recovered only to direct a header towards his own goal, with Ter Stegen's save falling kindly for Gimenez to slam into the net from on the goal line.
Barca appealed in vain for a foul but responded strongly and Lionel Messi started to pull the strings. He set in motion a move that saw Philippe Coutinho fire over from an acute angle, before feeding Martin Braithwaite for a low shot that was diverted away by the boot of goalkeeper Jeremias Ledesma.
Mingueza and Coutinho were replaced at half-time, with Pedri and Ousmane Dembele introduced, but Barca still required a slice of fortune to draw level as Jordi Alba's low cross clipped Alcala – on in place of Mauro – and wrong-footed the excellent Ledesma at his near post.
The Blaugrana's hard work was quickly undone. Clement Lenglet failed to control a routine throw-in on the left and the ball instead ran for Ter Stegen, who Negredo charged down before evading Frenkie de Jong's despairing challenge to tap into the net.
Sergino Dest scuffed wide from a promising position as Barca again piled on the pressure, though Ivan Alejo and Bobby Adekanye each passed up late chances to increase the margin of victory.