Romanian Halep, who had beaten Stephens in Paris in June, claimed her second Montreal title in three years and third for the 2018 season.
She closed out the hard-fought match with her third ace of the day.
Australian Open
'Never too late' - Tearful Cornet stuns Halep to reach first ever Grand Slam quarter-final
"It's an amazing feeling to be able to talk again at this ceremony as a winner," Halep said.
I feel like I reached my best level of tennis, even if I had a long break before this tournament and I felt dead after the first day.
Halep fended off four set points to claim a back-and-forth first set in a tiebreak after storming to a 4-1 lead before U.S. Open champion Stephens fought back to level.
Halep broke the third-seeded Stephens with a crosscourt winner to take a 5-4 lead and serve for the set. But the American broke Halep with a forehand winner and held two set points on the Romanian's serve at 6-5. A crosscourt backhand saved one and Stephens netted a return on the second.
Numerous forehand errors by Halep gave Stephens a 4-0 lead in the tiebreak and the American went up 6-4 before Halep rallied, crushing a backhand down the line to earn her first set point, which she converted.
Stephens led throughout the second set, breaking Halep twice, but the Romanian took control of the third set, turning a break into a 5-2 advantage.
Stephens rallied to within 5-4 before Halep, on her fourth match point, slammed her third ace of the match and dropped to her knees in triumph.
"You make me play better and better every time we play," Halep said of Stephens.
The American returned the compliment.
"Even though I lost today, I literally left everything on the court," Stephens said.
"Obviously I'm sad I lost, but losing to the number one player isn't too bad.
"Every time I play her, she makes me a better player, she makes me raise my level."
Australian Open men
‘I think we’ll still see him next year’: Konta on Murray’s future
Australian Open
Australian Open order of play: Day 6 - Evans looks to keep GB flag flying, Medvedev v crowd?
21/01/2022 AT 16:10