Lionel Messi opened the scoring in the 23rd minute but the visitors, who are in the mix for a Europa League place, struck twice in the second half to rock Barca's title hopes.
Darwin Marchis levelled just after the hour mark and Jorge Molina headed in the winner with 11 minutes to go to leave Ronald Koeman's side third in the table, two points behind leaders Atletico Madrid.
All Barca's players that are a yellow card away from a ban -- Messi, Antoine Griezmann, Frenkie de Jong and Oscar Mingueza -- managed to avoid the booking that would have ruled them out of Sunday's tricky trip to Valencia. However, that means they're now all a suspension risk for the following game, the crucial home date with leaders Atletico a week Saturday.
Barca no longer have the title in their own hands. If they win their remaining five games, they will leapfrog Atletico, courtesy of the fact they host them on May 8, but that will not be enough if Real Madrid win their last five fixtures. Barca and Madrid are level on points, but Los Blancos boast a superior head-to-head record. Sevilla are the fourth team in the mix. They're three behind Atletico and one point back from Barca and Madrid.
What will frustrate Barca most was that this was a game they should never have lost. A 1-0 lead proved dangerous and wastefulness in attack and defensive lapses cost them. Both of Granada's goals were the result of slack play from the hosts.
Manager rating out of 10
5 -- Koeman's anger boiled over in the second half as his side failed to kill off the game and he was sent to the stands for something he said to the referee.
Player ratings (1-10; 10 = best. Players introduced after 70 minutes get no rating)
GK Marc-Andre ter Stegen, 6 -- Slow off his line for the first goal but was sold short both times by his defence.
DF Oscar Mingueza, 5 -- Mistimed an interception in the build-up to Granada's first goal to deflect the ball into Marchis' path.
DF Gerard Pique, 5 -- Lost Molina for the second Granada goal, leaving the 39-year-old striker completely unmarked.
DF Samuel Umtiti, 5 -- Like Pique, was guilty of watching Molina drift in for the winning goal. Other than that, didn't do too badly on his first start in nearly two months, including one good block on Roberto Soldado in the first half.
MF Frenkie de Jong, 6 -- Worked hard to defend and attack and was involved in some nice moves, but didn't have a huge effect on the game.
MF Sergio Busquets, 7 -- Produced some of Barca's best moments, with three or four of his passes of the quality that very few players can conjure up.
MF Jordi Alba, 5 -- Was crowded out on the left flank by Granada but kept going and did provide an outlet for his teammates.
FW Lionel Messi, 6 -- Scored a brilliant opener, his 26th in the league this season, but missed a great chance to make it two before half-time.
FW Antoine Griezmann, 6 -- Great turn and pass to set up Messi's goal but missed his best chance, curling wide after Ilaix's pull-back.
MF Pedri, 6 -- Came on at 1-1 and couldn't really get into a game that had just opened up with the Granada goal.
FW Ousmane Dembele, 6 -- Saw plenty of the ball while on the pitch but couldn't come up with anything in the final third.
FW Francisco Trincao, N/R -- A last roll of the dice from Koeman after Molina had put Granada ahead.