Bale got the ball rolling early on while James netted either side of the break before the returning Karim Benzema – back after a thigh injury – headed home a fourth and Bale finished the rout after 89 minutes with a stunning solo effort.
It did not take Bale long to break the deadlock on Saturday as the Wales international nodded home James’ pinpoint pass into the box, sending his glancing close-range header past a diving Antonio Adan just two minutes in.
Moments later Betis goalkeeper Adan did well to send Cristiano Ronaldo’s powerful free-kick over the bar as the hosts continued to put the pressure on.
The away side had a half-chance to level after 10 minutes but Ruben Castro’s long-range effort – from an almost-impossible angle – sailed high into the stand.
At the other end, Bale was unfortunate to fire over the crossbar while Benzema could not quite get his head on the end of Ronaldo’s cross to the far post before Toni Kroos fired wide as the home side searched for a second goal.
Marcelo blocked Xavi Torres’ effort midway through the first half as the visitors began to come back into the game but Madrid continued to dominate and Ronaldo could have made it two 10 minutes before the break.
The Portuguese dribbled past German Pezzella before breaking into the 18-yard box, but Adan stood tall and Ronaldo’s close-range effort was kept out by the Betis keeper.
And, just before half-time, the hosts did double their lead after Ronaldo was brought down on the edge of the box by Francisco Molinero following a cross from Marcelo. The referee awarded a free-kick on the right and James hammered the resulting set-piece in off the far post and in the back of the net with a beautiful finish.
Keylor Navas did well to keep out Castro after some poor play from the Madrid defence, while Luka Modric suffered what looked like an ankle injury as the half wore on.
The home side came out fired up for the second half and Benzema made it three with a great team goal started by Danilo, who picked out James. The Colombian found Bale on the right of the box and the former Tottenham man’s cross reached Benzema, who headed home from close range leaving Adan with no chance.
James gave the home fans even more to celebrate three minutes later after Marcelo’s cross rolled back to Kroos on the edge of area and James’ overhead kick stunned the Betis defence and a helpless Adan.
Benzema lasted just under an hour on his return from injury and he was replaced by Isco after 52 minutes.
The away side were awarded a penalty just after the hour as substitute Jorge Molina was closed off by Raphael Varane in the box. The referee pointed straight to the spot but Navas managed to save Castro’s weak effort.
Sergio Ramos almost made it five for Madrid after 77 minutes but his over-head kick hit the woodwork before Ronaldo was again thwarted by Adan.
Bale added the gloss late on after picking up the ball in the Betis half and then sending his long-range thunderbolt in off the post to seal the three points and help Real up to third in the table.