Sharapova, 30, came back to the tour in April following a 15-month ban for taking the banned drug meldonium.
The Russian beat defending champion Peng in 78 minutes and maintained her record of not dropping a set this week.
She will play 19-year-old world number 102 Aryna Sabalenka of Belarus, who beat Italy’s Sara Errani 6-1 6-3.
Sharapova, ranked 86th in the world, made the last 16 at the US Open in September and also reached the last 16 in Beijing last week, before losing to world number one Simona Halep.
It is her first final since May 2015, when she won the Italian Open.
In June the following year she received a two-year ban for a prohibited substance but in October 2016 that was reduced to 15 months after an appeal to the Court of Arbitration for Sport.
She lost to Peng in China in 2009 but that remains her only defeat in seven meetings with the third seed and world number 25.
Sharapova will now face Sabalenka for the first time after the teenager fired 10 aces in a 58-minute straight-sets victory over Errani, winner of nine WTA titles.
Sabalenka seized her chances in clinical fashion against the 30-year-old world number 280, claiming a 100% record on break point opportunities.