The Australian world number two turned dominant after losing the opening set, rushing to a 5-7 6-2 6-0 victory over the Greek Sakkari.
Barty will face either Czech Karolina Pliskova or Russia's Svetlana Kuznetsova in the semi-finals.
The Australian surged to a 4-1 advantage in the first set and appeared on her way to an easy triumph.
Keys claims Cincinnati title over Kuznetsova
But Sakkari had other ideas.
The Greek, using a variety of backhand winners that resulted in mounting unforced errors by Barty, wrestled control to take the set.
In explaining the turnaround, Barty said, “I started the match well and I went away from what was working. Maria took some risks that paid off."
The second saw a reversal of form with Barty cleaning up her errors and effectively employing a backhand slice that deserted her in the opener.
"It was important for me at the start of the second set to go back to basics and what worked before," the 23-year-old Barty said.
I had to serve well, and not give her too many looks at second serves. I tried to bring in my slice to change the tempo of the match.
With 11 winners and just four unforced errors she easily took the set. Sakkari was no match in the third as Barty raced through for the win.
World number one Osaka retires with knee injury
Barty and Sakkari to meet after marathon wins in Cincinnati