The victory over the 19-times Grand Slam champion was the second ATP World Tour Masters 1000 title of the season for the German, who also beat Novak Djokovic in Rome.
German fourth seed Alexander Zverev upset Roger Federer 6-3, 6-4 in the Rogers Cup final in Montreal on Sunday to join the Swiss right-hander as the most trophy-laden player on the ATP Tour this year with five titles.
The 20-year-old German, who arrived in Montreal fresh from his triumph in Washington, proved up for the task right out of the gate as he had the Swiss second seed on his heels from the start on a sunny afternoon.
Zverev was poised and aggressive off the ground to create space for his power game and displayed some short-angled winners off thumping forehands and backhands to grab an early break for a 3-1 lead. He consolidated for a 4-1 cushion and ultimately closed out the opening set after a mere 30 minutes.
Federer, who entered the match 5-0 in finals this year, started to find his groove early in the second set but suddenly appeared out of sorts while Zverev broke in the seventh game to pull ahead 4-3 and held on for a surprise win that took 68 minutes.
The victory over the 19-times Grand Slam champion was the second ATP World Tour Masters 1000 title of the season for Zverev, who also beat Novak Djokovic in Rome.
"This one against Roger is something so special for me because he was always a great idol growing up for me," Zverev said during his trophy presentation. "The greatest player of all time, beating him in a final, not just any final but in the final of a Masters 1000, is amazing."
The win improved Zverev to 5-1 in finals this year with the only defeat coming at the hands of Federer at Halle.
Federer spent six months on the sidelines in the second half of last season but has returned to his very best this year by winning five titles, including a pair of Grand Slams at the Australian Open and Wimbledon.
He seemed ready to shift momentum early in the second set when he earned a trio of break points but Zverev saved them all in dominant fashion to hold for 1-1.
Zverev then grabbed the decisive break in the seventh game to pull ahead 4-3 before cruising to the finish line.