Luuk de Jong put the Catalans in front at Los Carmenes, heading in a cross from 38-year-old Dani Alves, who was making his first La Liga appearance since May 2016.
But Gavi was shown a second yellow card in the 79th minute and Granada equalised in the 89th, Antonio Puertas rifling a shot into the corner to deny Barcelona victory.
Xavi Hernandez's side could have moved into the Champions League qualification spots for the first time since September but instead, they stay sixth, level on points with Atletico Madrid, who are still to face Villarreal on Sunday.
Real Sociedad sit fourth after they had earlier won 1-0 at home to Celta Vigo.
Alves' last league game for Barcelona came five years ago, also away at Granada, and he also claimed an assist that day as Luis Suarez scored a hat-trick and Barca won the title.
Now 14 points behind leaders Real Madrid, Alves has rejoined a team competing not for the title but a place in the top four, with Champions League qualification this season crucial to the club's hopes of recovery.
The Brazilian's return is also aimed at strengthening the mentality of a youthful Barca side, whose vulnerability was again evident against a Granada side that fully deserved their point.
The 17-year-old Gavi is likely to be a key player for many years to come but his red card with 11 minutes left cost his side dear, giving Granada the impetus they needed at a crucial time.
A breathless first half saw De Jong head into the corner but Gavi was just offside while Granada went close at the other end, Darwin Machis driving low and forcing an excellent save from Marc-Andre ter Stegen.
Granada deserved to be level at half-time but parity only lasted 12 minutes after the restart as Alves collected the ball on the right and swung a deep cross into the penalty area. De Jong backtracked behind Victor Diaz to make space and headed in past the diving Luis Maximiano.
Barcelona were never comfortable though and when Gavi slid in late on Alex Collado, an equaliser felt inevitable. A Granada corner brushed the thigh of Sergio Busquets and dribbled loose in the area. Puertas adjusted, swivelled and lashed his shot into the corner.
Granada almost won it in injury-time when Ter Stegen scuffed a clearance and Luis Milla attempted a well-placed lob. Ter Stegen recovered just in time.