The 26-year-old Romanian star also won the hard-court event that rotates between Toronto and Montreal in 2016 in Montreal.
In a rematch of Halep's French Open final victory, she overcame Stephens in the match that had 15 service breaks. Halep has won her past six meetings with the 25-year-old American. Stephens, preparing for her U.S. Open title defense, is 0-8 against No. 1-ranked players.
"I couldn't believe that it's over,'' Halep said. "I was really tired. I feel like these tournaments, at this level, you have to have one day off between the matches. It's really tough. It's brutal. This week it was really tough.''
Halep won her third title of the year and 18th overall.
"Both matches were crazy good,'' Halep said about the French and Rogers finals. "She makes me play better and better every time we meet each other. That's a great thing for me. I feel like she improved in her mental [side] also. She doesn't give up that much now. Of course, she's a strong player. I think she's a complex player. She has everything.''
A large Romanian contingent waving their red and yellow flags chanted Halep's name between points. However, there were just as many pulling for Stephens in a match of two players who don't overpower with their serve but hammer groundstrokes down the lines.
"I thought I played well, I thought she played well,'' Stephens said. "Obviously, in a final, you hope for matches like that -- super competitive, high energy. There's nothing more than you could hope for in a final. It's obviously upsetting that I didn't win, but I think I got better than the last final we played. Yeah, it's disappointing, but I think this will help me moving forward, getting ready to go into [Cincinnati] and the US Open.''
A back-and-forth opening set saw Halep jump to a 4-1 lead before Stephens found the range with her forehand and broke service three times to take a 6-5 lead. The American then wasted two set points as Halep forced a tiebreaker.
Stephens went up on two Halep double faults, but the Romanian stormed back to take the set. It was the first set Stephens lost all week.
Stephens added three more breaks to take the second set, but lost her serve to open the third.
She broke back for 2-2, but then suffered a letdown as Halep broke service twice more to take the lead. Stephens fought off three match points for one last service break before Halep closed it out.