The result maintained Barcelona's position in second place with 58 points, four behind leaders Real Madrid, who could extend the gap if they beat Sevilla on Sunday.
Villarreal, third on 56 points, have a chance to leapfrog Barcelona if they overcome Atletico Madrid. Betis lie 12th on 38 points, six clear of the relegation zone.
The visitors took the initiative through Spanish youngster Bojan after 12 minutes.
Samuel Eto'o close-range shot was denied by the bar before Bojan gathered the ball on the rebound to fire a low shot home.
Cameroonian frontman Eto'o doubled Barca's advantage three minutes later when he got ahead of Betis keeper to head home Andres Iniesta's delightful chip.
Despite Barcelona's comfortable lead, Betis managed to overturn the deficit in a brilliant fashion after a frenetic second half.
Three minutes past the hour mark, Rafael Sobis bamboozled Gianluca Zambrotta with a skilful move before providing a cross to the unmarked Edu, who headed past Victor Valdes.
Edu missed a penalty in the 75th minute after Eric Abidal tugged David Odonkor inside the area but his teammate Juanito made amends few moments later.
He drew Betis level when a mis-timed jump by Yaya Toure allowed him to chest down a long ball before sending a superb volley into the bottom corner of the net.
Edu sealed a precious victory for Betis two minutes later when he cut inside the below-par Lilian Thuram before firing a powerful volley into the back of the net.