Much of the early stages were dominated by short rallies, and Garcia overcame her first moment of concern by saving three break points in the third game.
The opener continued with serve until the 11th game, when the 21-year-old broke Kvitova for the first time before converting set point at the third attempt.
In a second set dominated by poor serving, the two players shared four breaks inside the opening seven games and Kvitova showed her resilience by fighting back from 4-0 down to get back on level terms.
Garcia produced the perfect response to the setback by breaking at the start of the decider, and it was clear that her form at the back of the court was often too much for Kvitova as the two-time Wimbledon winner fell two breaks behind.
The fourth seed did manage to produce a reply, before once again conceding the advantage to Garcia, who capitalised to set up a meeting with Elina Svitolina.