Kevin Youkilis added a solo shot and J.J. Putz closed it out in a nervous ninth inning for Team USA, which lost to Canada in the inaugural WBC three years ago.
Despite a roster loaded with major league All-Stars, that U.S. squad stumbled to a disappointing eighth-place finish - a big reason this club has talked about taking back America's game.
The intensity was evident. A fired-up McCann yelled and embraced Putz near the mound after the New York Mets reliever stranded the potential tying run at second base when Jason Bay flied out.
LaTroy Hawkins worked a scoreless inning for the win and Putz earned the save after allowing Joey Votto's broken-bat RBI double in the ninth that cut it to 6-5 with one out. Putz then retired Justin Morneau on a grounder and got Bay on a fly to right.
Votto and Russell Martin each hit a solo homer for Canada, but it wasn't enough for the hosts to repeat their 8-6 upset over the U.S. in the opening round of the 2006 tournament.
Votto, born and raised in suburban Toronto, went 4-for-5 with two RBIs before a lively crowd of 42,314.
The U.S. can advance to the second round with a victory in its next game, Sunday night against the winner of Saturday's late game between Italy and Venezuela. Canada will play the loser of the Italy-Venezuela game on Monday night, hoping to avoid elimination in Group C.
United States starter Jake Peavy lasted three innings, allowing two runs and two hits. He walked three and struck out four.
Canadian right-hander Mike Johnson gave up four runs and four hits in four innings. He walked three and struck out three.
Canada opened the scoring in the first when Martin walked, went to third on Votto's single and scored on Morneau's fielder's choice.
Bay walked and Matt Stairs was hit by a pitch to load the bases, but Peavy struck out Mark Teahen to end the inning.
The U.S. tied it in the second. Youkilis and Dunn walked, Ryan Braun reached on a fielder's choice and McCann hit a sacrifice fly to center.
Votto hit a one-out homer into the second deck in right-center in the third, but Canada's lead was short-lived.
Youkilis tied it with a homer to right to begin the fourth. Dunn followed with a walk and, one out later, McCann drilled the first pitch he saw into the U.S. bullpen in right.
Canada got one back in the sixth when Bay scored on Joel Hanrahan's wild pitch, but Dunn answered in the bottom half with a two-run drive to left-center.
Martin homered off Scot Shields in the seventh, but Stairs struck out with runners at first and second to end the inning.
Derek Jeter went 2-for-3 but was replaced by pinch-runner Jimmy Rollins after a leadoff single in the fifth. Rollins was later thrown out trying to steal second.
Notes:@ Hall of Fame manager and WBC ambassador Tommy Lasorda threw out the first pitch. ... Votto has three hits in three career at-bats against Peavy. ... The U.S. left the bases loaded in the seventh and eighth.