Vinicius Junior struck for the third game running as Madrid took an early lead at the Santiago Bernabeu with a chip over Rui Silva.
Betis responded 8 minutes later with a low strike that managed to beat Thibaut Courtois into the net.
The game was heading for a draw until substitute Rodrygo finished a low ball into the net to edge Madrid over Betis scoring his first goal of the new campaign for the Champions.
Madrid moved three points clear of second-placed Betis, but Barcelona could trim the gap to two if they beat Sevilla later on Saturday.
While both La Liga teams will keep an eye on their mid-week matches in the Champions League.