Scorers: Barcelona - Neymar (71); Atlético Madrid - Diego (56)
Brazilian forward Ribas came on to replace Atletico’s talisman Diego Costa after half an hour and unleashed an unstoppable drive from 30 yards to put the visitors ahead 11 minutes into the second half.
But compatriot Neymar finished off a fine pass by Andres Iniesta to level the score 15 minutes later and set up the fourth successive draw in the meetings between the two teams this season as the match finished 1-1.
Atletico had successfully cancelled out Barcelona until Ribas’ goal, but were clinging on by the end, relying on goalkeeper Thibaut Courtois to make outstanding saves after Neymar’s equaliser, denying Iniesta and then Lionel Messi.
And Diego Simeone’s side’s desperation was underlined by the fact six of their players picked up yellow cards over the 90 minutes, while just two Barca players received cautions.
Costa was named in the starting line-up despite retiring prematurely from Atleti’s training session the previous evening, but succumbed to a hamstring injury which is almost certain to rule him out of the return leg in Madrid.
Barca had a near monopoly on possession after the equaliser, while Atletico finished the game playing with second-string midfielder Cristian Rodriguez as their sole striker, a damning indictment of the thinness of Diego Simeone’s squad in comparison to Barcelona, who had forwards Pedro and Alexis Sanchez on the bench.
Courtois made one final save of the night to keep out Messi’s late free-kick, and Atletico will feel relieved to return to Madrid with the tie evenly balanced, having scored a crucial goal to boot.
Barcelona: Pinto, Dani Alves, Pique (Bartra 12), Mascherano, Jordi Alba, Xavi, Busquets, Fabregas (Alexis 68), Neymar, Messi, Iniesta. Subs Not Used: Oier, Pedro, Song, Adriano, Sergi Roberto.
Atletico: Courtois, Juanfran, Godin, Miranda, Filipe Luis, Turan (Rodriguez 77), Gabi, Tiago, Koke, Villa (Sosa 70), Diego Costa (Diego 29). Subs Not Used: Aranzubia, Mario Suarez, Alderweireld, Insua.