Junior Firpo gave Betis a deserved lead after 20 minutes, before veteran Joaquin made it two before the break.
Giovani Lo Celso, helped by an uncharacteristic mistake from Ter-Stegen, and Sergio Canales also got on the scoresheet, meaning that a brace from Messi and another from Arturo Vidal wasn't enough to earn Barcelona a point.
The loss ended an unbeaten run of 42 consecutive home games for Barcelona in the league dating back to a 2-1 defeat to Alaves on September 10, 2016. Victory for Espanyol against Sevilla later on Sunday could see them pull level with their city neighbours at the LaLiga summit. Someone might play one game and then someone else the next. "Winning at the Camp Nou requires concentration and doing everything very well".More news: There's issues with the iPhone X
More news: Trump "insulted" by Macron's proposal for European army
More news: Saudi king hosts Abu Dhabi crown prince amid Yemen offensive
Lionel Messi scored his second goal from the spot during the second half stoppage time but that couldn't stop the Seville-based team from taking away the three points from the game.
William Carvalho produced a brilliant through-ball to release Junior down the left and he cut in on to his right foot in front of Sergi Roberto before beating Ter Stegen at the near post. Two substitutes combined for a second, Munir El Haddadi laying on Vidal to make it 3-2 but no sooner had the recovery began again, it was halted.
Suarez was not able to find the net himself on a frustrating afternoon which concluded with midfielder Ivan Rakitic getting sent off.
Messi added his second in injury-time, tapping a Vidal pass over the line.
The home side predictably started the second half in determined fashion and Messi and Luis Suarez both shot wide before they were gifted a lifeline as Tello was penalised for pulling back Jordi Alba as he tried to drive into the area.