Romanian Halep, ranked third in the world and last year's French Open runner-up, disposed of unseeded home player Zheng Saisai in straight sets, 6-2, 6-3.
But the scoreline belied the fact that the world number 97 put up enough resistance to draw the match out to an hour and 26 minutes.
Czech Kvitova, the world number four and second seed at the $500,000 tournament, was favourite to go through in the other semifinal.
But she was broken in the third game and although the 2011 and 2014 Wimbledon champion saved five set points, Bacsinszky finally clinched the first set.
In the second set Kvitova had three break points in a long fourth game, but the 25-year-old Swiss, who had not reached a WTA final since 2010, held on and showed no nerves on match point, seizing her first opportunity to seal victory.
Kvitova was bidding to make her third final in China in a row, after winning the inaugural Wuhan Open and losing to Maria Sharapova in the decider of the China Open last autumn.
UPDATE: Halep, the number one seed, dispatched number eight seed Bacsinszky 6-2, 6-2 in 62 minutes on Saturday to score her ninth WTA title.