The France forward, Kylian Mbappe, ran onto Federico Valverde’s backheel and slotted the opener past Rui Silva. He then sent Silva the wrong way with a penalty after the goalkeeper had brought down Vinicius Jr.
Mbappe had failed to score in his previous three La Liga fixtures, after netting on his debut for the club in the UEFA Super Cup against Atalanta. The 25-year-old was a summer signing from Paris St-Germain, where he remains the all-time top scorer with 256 goals.
His first goal came from his 25th shot of the La Liga season – with the penalty coming from his 26th. That is more shots than anybody else in Europe’s top five leagues.
Real Betis had chances to score earlier on with Abde Ezzalzouli heading wide from close range and Barcelona loanee Vitor Roque forcing a save with his first touch from the bench.
Spanish champions Madrid had plenty of chances too though, with Mbappe failing with seven shots before his goal and Eder Militao and Valverde testing the goalkeeper.
Vinicius also hit the post with a deflected shot.
Madrid are unbeaten after four league games, although four points behind Barcelona. Betis have only picked up one point from their opening three matches.