Lionel Messi’s 23rd-minute goal appeared to have Barca on course for a fifth straight home win, a result good enough to see them leapfrog both rivals Real Madrid and long-time leaders Atletico in the table.
However, Granada – who had failed to even manage a draw in any of their previous 25 league visits to their Catalan opponents – turned the game around to further change the outlook in the title race.
Darwin Machis equalized before Barca boss Ronald Koeman was shown a red card, meaning the Dutchman had to watch on from the stands as Jorge Molina was afforded time and space to head in a 79th-minute winner.
The dramatic turnaround had never appeared on the cards, yet Barcelona allowed their opponents to score with their only two attempts on target to cause a huge upset.
Messi had broken the deadlock after linking up with Antoine Griezmann, the Frenchman timing his delayed return pass perfectly to allow his team-mate to fizz a low, left-footed shot beyond goalkeeper Aaron Escandell and into the far corner of the net.
However, Messi was not quite so clinical with another one-on-one opportunity later in the first half and Griezmann himself failed to capitalize when presented with a clear sight of goal soon after the break, firing well wide with his right foot.
Sergi Roberto also sent a volley off target as Barca struggled to make their dominance tell – and Granada made them pay to clinch a result that will undoubtedly be celebrated in the Spanish capital.
Oscar Mingueza's failure to cut out a throughball allowed Machis to run clear and slot the ball beyond the advancing Marc-Andre ter Stegen, while Barca's goalkeeper had no chance when Molina ghosted into the penalty area to convert Adrian Marin's cross.