Pepe Mel's side dominated with their high-tempo attacking football but were sloppy in defence and gifted struggling Granada a victory that dragged them out of the bottom three and up to 15th.
The visitors led after eight minutes when Betis failed to deal with a low centre and Gabriel Torje pounced on a loose ball to score.
Betis struggled to carve out clear openings until Alex Martinez crossed for unmarked striker Ruben Castro to volley the equaliser in the 62nd minute.
The hosts looked favourites to go on and triumph but with 16 minutes to go Mikel Rico picked up another loose ball in the area, spun away from his marker and lashed the winner high into the net.
Victory eased the pressure on new Granada coach Juan Antonio Anquela, who was a highly animated figure on the touchline throughout, following a run of four straight defeats in all competitions.
Betis stayed fourth with 19 points from 11 games, nine behind unbeaten leaders Barcelona who visit Real Mallorca on Sunday.
Champions Real Madrid, third with 20 points, face a tricky trip to sixth-placed Levante on Sunday.
Real Betis v Granada match data
Gabriel Torje was on the pitch for 69 minutes against Real Betis. The striker scored in the eighth minute and took three shots.
Los Beticos's Rubén Castro found the back of the net with a left-footed shot strike that came in the 62nd minute.
Real Betis are in fourth place with a record of six wins, four losses and one draw. Granada CF have now recorded a record of three wins, six losses and two draws this season, which puts them in 15th place, only one point above the relegation zone.
- Sports & Recreation
- Gabriel Torje