While Kvitova was able to break back after Sharapova's initial break of serve, she was powerless to stop the Russian from breaking her twice more to see out the first set of the game 6-2.
However, the Czech struck back in the second set, racing out to a 3-0 lead and then holding serve to tie the match score, having hit almost three times as many winners as her opponent.
It appeared as though Kvitova carried her momentum into the second set when she broke Sharapova, but the former world number one broke back to level the score. Both women held serve until the Russia capitalised on her 5-4 lead to break for the match.
Sharapova will now face third seed Victoria Azarenka in the final after she beat Kim Clijsters.