In a rather sedate first half, the only major highlight was a Gavi injury. The midfielder had to leave after the ball was kicked against his face by Hector Bellerin before he collided with the full-back's knee. A lack of clear-cut attempts saw both sides go goalless into the half-time break.
Juanmi seemed to have put Betis ahead minutes after the break, guiding his first-time effort past an onrushing Marc Andre Ter Stegen. However, the goal was disallowed for marginal offside.
Substitute Ousmane Dembele came close on three different occasions, but the Frenchman failed to make his efforts count. The home side were made to rue those missed chances, as a quick Betis counter-attack saw Juanmi sweep home the winner 11 minutes from time.
Barcelona pushed for a winner. But Ezzalzouli Abde blazed their best opportunity over from eight yards with ten minutes remaining.
With the defeat, Barcelona remain seventh in the La Liga table, while Betis move up to third. On that note, here's a look at the Barcelona player ratings from the game:
Marc-Andre ter Stegen - 6/10
Ter Stegen had a pretty quiet game, with Betis managing just two shots on target throughout the 90 minutes. However, he could've done better to stop Juanmi's effort.
Sergino Dest - 5/10
Dest visibly struggled to contain Betis' left-hand side. The right-back was often found strolling out of position, especially in defensive transitions. He was partly at fault for Betis' winner.
Ronald Araujo - 7/10
Araujo was once again a rare bright spot in Barcelona's shaky defence. The centre-back was pretty much faultless throughout the game. He showcased excellent recovery pace at times to keep Barcelona in the game until Betis scored.
Clement Lenglet - 7/10
Much like his defensive partner, Lenglet also had a pretty solid game. He helped Barcelona with their build-up play, and made some crucial interventions to keep the Betis frontline at bay.
Jordi Alba - 7/10
Alba covered a lot of ground down the left flank. He handled his defensive duties well, and also joined the attack at times. However, as has often been the case with him lately, the Spaniard failed to find accurate crosses throughout the game.
Sergio Busquets - 7/10
Busquets kept his composure and showcased great positional awareness to break Real Betis' plays down the middle. He did well to keep the game ticking for Barcelona, with his effortless and efficient passing.
Nico Gonzalez - 6/10
Gonzalez had a decent game at the centre of the park. He showed great intensity, and did well to drive the ball forward for Barcelona at times. It's fair to say the midfielder held his own in a tough game.
Gavi - 6/10
Gavi looked a little off the pace in the initial stages. The youngster did grow into the game as it wore on, though.
Unfortunately his evening was cut short due to a nasty injury.
Abde Ezzalzouli - 6/10
He showed great work rate down the flank, often tracking the opposition full-back into his own half. However, the youngster couldn't quite replicate a similar performance in attack. He also missed a glorious late chance to put Barcelona level in the game.
Memphis Depay - 4/10
Depay was woeful on the night. The Netherlands international looked uninterested at times too. He couldn't get involved in the game, and was left isolated up front for large swathes.
Philippe Coutinho - 6/10
Coutinho looked lively in the initial stages of the game. He was a constant threat down the right flank throughout the first half, but was completely missing and uninvolved after the break.
Ratings of Barcelona substitutes against Real Betis
Riqui Puig - 6/10
Puig came on as a 36th-minute substitute for the injured Gavi. He kept the ball well and tried to make some progressive runs down the middle. However, he was often fouled, and failed to make a telling impact on the game.
Ousmane Dembele - 7/10
Dembele came on as a 59th-minute substitute for Philippe Coutinho. While his arrival did inject some directness and energy in Barcelona's attack, he was pretty wasteful with his attempts.
Frenkie De Jong - 6/10
De Jong was sent in as a 59th-minute replacement for Nico Gonzalez. The midfielder did help Barcelona progress the ball forward with his directness and drive on the ball. But it wasn't enough to pull the game in the Blaugrana's favour.
Gerrard Pique - N/A
Pique came on as an 82nd-minute substitute for Barcelona, but he simply didn't have enough time to make an impact on the game.
Luuk De Jong - N/A
He was brought on to provide a much-needed aerial threat in the 82nd minute. But De Jong failed to hit the target with the one-headed effort he conjured during his time on the pitch.