David Soria made a wonderful save to keep out a curling Bale effort in the early stages of the contest, but a late offside flag meant that the Welshman's effort would not have counted even if it had found the back of the net.
Bale then came within inches of scoring in the 16th minute when he met a beautiful Marcelo cross, but the Welshman's header smacked off the top of the crossbar.
Real Madrid did take the lead in the 20th minute, however, when Carvajal expertly lifted a header over Getafe goalkeeper Soria, who had vacated his goal to deal with a Bale cross.
The home side thought that they had a penalty 10 minutes before the break when Sergio Ramos was bundled to the ground by Damian Suarez inside the box, but the offside flag ultimately came to Getafe's rescue.
Ramos then had the ball in the back of the Getafe net in the 43rd minute, only for the referee's whistle to cut the celebrations short, with the centre-back penalised for a foul.
Los Blancos had more than 80% of the ball in the opening 45 minutes of action, but Carvajal's header was the only thing that separated the two teams at the half-time break.
That changed in the 51st minute, however, when Bale's powerful strike from a Marco Asensio cross found its way into the back of the net. A mistake from Djene Dakonam led to Asensio delivering a dangerous ball into the Getafe box, and Bale was on hand to convert for 2-0.
Asensio almost put the match beyond Getafe in the 54th minute when he struck a powerful effort from outside the box, but the post came to the away side's rescue.
The same player then brought a smart save from Soria in the period that followed as Real Madrid looked for a third goal.
A wild attempt from Mauro Arambarri was just about the best that Getafe mustered in the second half of action, with the visitors finding it extremely difficult to make their mark.
REAL MADRID (4-3-3): Navas; Carvajal, Ramos, Nacho, Marcelo; Ceballos (Modric 72'), Kroos, Asensio; Isco (Casemiro 58'), Benzema, Bale (Lucas 77')
GETAFE (4-2-3-1): Soria; Damian, Djene, Bruno, Cabrera; Arambarri, Maksimovic; Portillo (Alejo 64'), Shibasaki, Ndiaye (Mata 58'); Molina (Angel 71')