The American great made another slow start at the WTA Premier event, but again recovered to reach the final courtesy of a 1-6 6-3 6-3 victory over Czech qualifier Bouzkova.
Williams moved into her 96th WTA Tour final and fifth at the Rogers Cup, where she is a three-time champion and will face Bianca Andreescu in the decider in Toronto.
But the 23-time grand slam winner looked in trouble early, dropping her first set of the tournament against the 21-year-old Bouzkova.
Williams committed 18 unforced errors in the first set, a backhand into the bottom of the net seeing her drop the opener.
Needing a response, Williams broke in the seventh game of the second set, crushing a forehand return winner on her way to winning the final four games of the set.
Bouzkova threatened to land the first blow of the decider, but Williams saved three break points in the third game.
That would prove to be crucial as she broke in the following game, taking a 3-1 lead she would not relinquish.
Andreescu awaits in the final after the 19-year-old Canadian overcame Sofia Kenin 6-4 7-6 (7-5) in the day's earlier semi-final.
She became the first Canadian to reach the women's singles final at the modern Rogers Cup and first since 1969, when the event was called the Canadian Open.