Diego Martinez's side had won their past two league games and led in the second minute, Ramon Azeez heading in at the back post, and they made it 2-0 from the penalty spot.
Arturo Vidal was penalised for handball after a VAR check and Alvaro Vadillo sent Marc-Andre ter Stegen the wrong way to leave Barca, who brought Lionel Messi and Ansu Fati on at half-time, with a mountain to climb.
Barca are winless in seven away games in all competitions and struggling in seventh, while promoted Granada are the shock league leaders after their third straight clean sheet.
Junior Firpo was making his first LaLiga start for Barcelona but he made two errors as Granada took the lead with 63 seconds on the clock.
Antonio Puertas profited on Junior's twin mistakes to race clear and deliver a low cross that ballooned over Ter Stegen via a deflection off Gerard Pique for Azeez to nod home.
Luis Suarez hit a free-kick into the wall as Barca tried to strike back, but they ended the first half without recording a shot on target.
After Messi came on at half-time, Barca almost gifted Granada a second. Ter Stegen carelessly dropped a cross, the goalkeeper recovering in time to beat Roberto Soldado to the loose ball.
Granada doubled their lead in the 66th minute, Arturo Vidal conceding a penalty shortly after replacing Ivan Rakitic, with Vadillo beating Ter Stegen from the spot.
Despite Messi and Fati adding zest to their attack, Barca still could not find a way through, the captain forcing Rui Silva into his first save with eight minutes to play.
What does it mean? Problems mount for Valverde
Barca have taken a single point from three away league games this season, while they drew a blank at Borussia Dortmund in the Champions League in midweek. Messi's lack of fitness has exposed the weaknesses in Barca's squad and questions will continue to be asked of Valverde.
Granada's remarkable start to the season means they top the league ahead of Sevilla – who have a game against Real Madrid in hand – on goal difference, but Barca are only three points off the summit despite their issues both at the back and in attack.
Herrera sets tone for battling performance
Granada inevitably had far less of the ball than Barca, but Yangel Herrera's energetic midfield display helped keep the champions at bay. He recorded four tackles, four interceptions and two blocks - as many as anyone on the pitch for all three defensive metrics before his 83rd-minute withdrawal.
Perez out of his depth
Were it not for injuries to Messi and Ousmane Dembele, Carles Perez would surely be nowhere near the Barca squad.
Another limp performance from the 21-year-old indicated why Barca were so keen to bring Neymar back from Paris Saint-Germain this year as, Messi apart, the lack of stardust in attack is clear. Perez was withdrawn at half-time, with 16-year-old Fati, Barca's future, sent on in his place, although the similarly anonymous Antoine Griezmann could have also made way.
Barca have a quick turnaround with Villarreal visiting Camp Nou on Tuesday. Granada go to Real Valladolid on the same day.