Williams was broken three times in the first set before finding her groove in time to beat 12th-seeded Wozniacki for the second time this month and eighth time in nine career meetings.
Williams, in pursuit of her first Cincinnati title, got better as the nearly two-hour match went on, overpowering Wozniacki with seven aces in the last two sets and breaking her wilting opponent four times in the final set.
The tournament is the last of the key tune-ups ahead of the Aug. 25-Sept. 8 U.S. Open, the year's final grand slam, where world number one Williams will defend her crown.
Williams, who lost last year's Cincinnati title in a third set tie break to Victoria Azarenka, will play the winner of Saturday's other semi-final between French Open champion Maria Sharapova and Serbian Ana Ivanovic, in Sunday's final.
(Reporting by Frank Pingue in Toronto; editing by Ken Ferris)