Shortly after Karim Benzema had a goal disallowed, the France striker set up the 61st-minute winner with a cross which was expertly volleyed home by Carvajal.
Eden Hazard almost added a late second but Betis keeper Rui Silva made a fine save.
Elsewhere in La Liga, Athletic Bilbao beat Celta Vigo 1-0 thanks to a goal from Inaki Williams, Youssef En-Nesyri cancelled out Enzo Roco's strike as Sevilla drew 1-1 at Elche and Ander Barrenetxea's goal gave Real Sociedad a 1-0 win over Levante.
In Italy, Juventus began life without Cristiano Ronaldo with a shock 1-0 home defeat to newly-promoted Empoli.
A day after Ronaldo agreed to rejoin his former club Manchester United, Juve were downed by a first-half goal from Leonardo Mancuso.
Ciro Immobile scored a first-half hat-trick as Lazio hammered Spezia 6-1.
The Serie A newcomers actually opened the scoring through Daniele Verde but Immobile left them 3-1 down at the interval and Felipe Anderson, Elseid Hysaj and Luis Alberto netted in the second half.
Goals from Nicolas Gonzalez and Dusan Vlahovic gave Fiorentina a 2-1 win over Torino, for whom Simone Verdi hit a late consolation, while Atalanta and Bologna drew 0-0.
Robert Lewandowski hit a hat-trick to reach 300 goals for Bayern Munich as they thumped Hertha Berlin 5-0 in the Bundesliga.
Thomas Muller opened the scoring before Lewandowski doubled the lead and Jamal Musiala added the third.
Lewandowski struck twice more to reach his landmark and round off an impressive win.
Wooyeong Leong scored twice and Lucas Holer added a third to put Freiburg 3-0 against Stuttgart before the hosts pulled two back before half-time through Konstantinos Mavropanos and Hamadi Al Ghaddioui.
But Freiburg held out for a 3-2 win while goals from Anderson Lucoqui, Adam Szalai and Kevin Stoger gave Mainz a 3-0 victory over Greuther Furth.
Two own goals in the first 14 minutes from Iago and Florian Niederlechner put Bayer Leverkusen on the way to a 4-1 win at Augsburg.
Niederlechner pulled one back for the hosts before Patrik Schick and Florian Wirtz completed the scoring.
Late goals from Louis Schaub and Tim Lemperle gave Cologne a 2-1 victory over Bochum while Arminia Bielefeld and Eintracht Frankfurt drew 1-1.
In Ligue 1 Justin Kluivert, Amine Gouiri (2) and Khephren Thuram gave Nice a 4-0 win against Bordeaux.
Matteo Guendouzi, Gerson and Cengiz Under were on target as Marseille beat St Etienne 3-1, with Timothee Kolodziejczak replying for the visitors.