Simona Halep came from a set behind to defeat seventh seed Jessica Pegula 2-6 6-3 6-4 in the semi-final of the Canadian Open on Saturday, booking her place in the final against Beatriz Haddad Maia.

Romania's Halep, the 15th seed, struggled to return Pegula's serve in the opening set, winning just 32 per cent (nine-of-28) of her return points while compounding her early issues with four double faults.

Whether Pegula began to run out of steam, or Halep figured something out, she had significantly more success against the American's serve the rest of the way, winning 55 per cent (12-of-22) of her return points in the second set, and 57 per cent (20-of-35) in the decider.

Halep has now won 11 of her past 13 matches, and Pegula is her third consecutive win against a top-25 opponent after defeating both world number 21 Jil Teichmann and world number 13 Coco Gauff in straight sets. 

While this will be Halep's 18th career WTA 1000 final, it will be Haddad Maia's first, after she emerged triumphant 6-4 7-6 (9-7) against 14th seed Karolina Pliskova.

She did not have a serving advantage against Pliskova, who won the ace count nine-to-one, but she was gritty, saving four of the six break points she faced, and refused to concede the second set after dropping the first three games.

Haddad Maia – the only Brazilian ranked inside the top-100 – has now beaten five consecutive top-25 opponents on her way to the final, including world number one Iga Swiatek, Olympic gold medalist Belinda Bencic and Canadian hometown hero Leylah Fernandez.