Halep, from Romania, also won the title in 2016 and 2018 when it was called the Rogers Cup. It's the 24th title of Halep's career and first since switching to Patrick Mouratoglou as her coach.
The 26-year-old Haddad Maia, who is from Brazil, has never won a tennis tournament at this level before but has rocketed up the WTA Tour's standings this year.
A year ago, Haddad Maia was ranked 183rd in the world, but entered this week's tournament No. 24 and will crack the top 20 next week.
Halep fell behind Haddad Maia 3-0 in the opening set and started yelling at herself. Some Brazilian fans -- many of them in yellow national soccer kit -- started chanting "Bee-ah! Bee-ah!" to cheer on Haddad-Maia but they were soon drowned out by Romanian fans' calls of "See-moh-nah! See-moh-nah!"
The chanting seemed to rouse Halep. A deep forehand return on set point that was just out of the reach of Haddad Maia's extended racket sealed six consecutive games for Halep as she came back to take the first set.
Haddad Maia seemed to shake off that stunning comeback to start the second set, quickly winning the first two games and fending off Halep on two more for a 4-0 lead.
Although Halep won a game back to slow Haddad Maia slightly and make it 4-1, the younger Brazilian immediately reclaimed that momentum to make it 5-1.
Halep claimed another game before Haddad Maia could serve for the second set. Haddad Maia jumped out to a 40-15 advantage and then her serve handcuffed Halep to win the set and force a decisive third and final set.
For the first time in the match, Halep opened a set with a game winner and took a 2-0 lead when Haddad Maia's return of her forehand went long. Later, an overhand smash at the net by Halep completed her own unblemished game for a 5-2 lead.
Haddad Maia stayed in the match, winning another game. She made it 5-3 when her high backhanded volley dropped in for a point.
Holding a 40-15 advantage in the ninth game of the third set, Halep clinched her first title in Toronto when Haddad Maia put her return into the net.