The Blaugrana opted for Serginho Dest ahead of Sergi Roberto from the side that crushed Getafe the last time out in the league.
Barcelona were denied a 16th minute lead from a tap-in by Frenkie De Jong following a delivery from Jordi Alba at the back-post, but it came off the woodwork before the host scrambled away.
The Yellow Submarines had the breakthrough after ten minutes as Samuel Chukwueze latched onto a pass from Pau Torres to go on and round goalkeeper Marc-Andre Ter Stegen for an easy finish.
Barca clawed back within four minutes when Antoine Griezmann charged on a ball from Oscar Mingueza to hold off goalkeeper Sergio Asenjo for a composed dink into the net.
Griezmann had a double in the last ten minutes of the half after he intercepted a back-pass from Juan Foyth before going on to display a first-time finish past Asenjo.
A subsequent injury enforced substitution from the Catalan giants ahead of the second half had Roberto coming on for Dest before a header from Gerard Moreno worked Ter Stegen to a save.
Barcelona battled to get a sight of goal following the earlier exchanges of the second stanza, though Griezmann managed to flick a shot from a cross by Roberto wide.
The Yellow Submarines would finish the match with ten players towards the midway stage of the second period as Manuel Trigueros got a straight red card for a rash challenge on Lionel Messi.
Barca remained under pressure late on and nearly succumbed through Moreno, but he went wide as the Catalans held on to stay third and go level on points with second-place Real Madrid.