Wozniacki, a champion here in 2010 and 2016, converted six of seven break points to reach her seventh final of 2017.
Playing in her first tournament since earning the WTA's top ranking, Wimbledon champion Muguruza had 29 unforced errors to drop the final 10 games of the match.
"I didn't feel that fresh," Muguruza said. "In the long rallies, I was struggling a little bit. I felt my energy was a little bit low, but I think she just had a good match. I didn't make the important shots in the important moments so the match went to her side very fast."
Sixth-ranked Wozniacki will face Anastasia Pavlyuchenkova in Sunday's final. Pavlyuchenkova rallied from being down 3-0 in the final set to beat former No. 1 Angelique Kerber 6-0, 6-7 (4), 6-4.
Pavlyuchenkova, who is aiming for her third title of 2017, broke serve seven times and won six of the final seven games.
Pavlyuchenkova admitted her slow start in the final set had her thinking about the next tournament in China.
"I was already thinking about going to Wuhan," Pavlyuchenkova said. "In my head I was booking flights. But at the same time, I always fight to the last point."