Despite serving five double faults in the first set, the former Wimbledon champion was able to secure a late break thanks to some powerful returns to clinch the opener.
The Romanian made a fast start to the second set, claiming the opening four games, before the Czech player broke back.
However, Cirstea's confidence continued to grow, and she was able to increase her range of shots to quickly level the match.
The sixth seed's focus from the opening set was missing in the deciding set, allowing Cirstea to quickly take a 5-1 lead.
Kvitova managed to hold to make her opponent serve out the match, but Cirstea kept her cool to set up a last-four encounter with Li Na.