Andreescu has won her past four matches in three sets and has won six three-setters in a row overall. Eight of her 11 matches this year have gone the distance.
"Today, I don't feel I played my best tennis, but I found a way somehow and I'm super proud of myself with how I dealt with everything," she said at a press conference after her marathon match.
The Canadian will face top-ranked Ash Barty of Australia in the final of the WTA 1000 event on Saturday. It will be the first time the two have faced off against one-another.
Barty beat No. 5 seed Elina Svitolina of Ukraine 6-3, 6-3 in the first semifinal on Thursday.