Jeremy Martinez hit a two-run single in the bottom of the third inning and Christopher Okey added another RBI single to put the Americans ahead for good at 4-1.
Two more runs in the seventh earned the U.S. its first gold at the tournament since 1999.
The silver is Canada's best finish since winning gold in 1991.
"It's a tremendous accomplishment for twenty players, I'm really proud of them," said Canada's manager Greg Hamilton.
"We didn't get the easy route to the final and to get to the final and finish second is a testament to some very talented and committed players."
Canada's offence was stifled by U.S. starter Ian Clarkin, who allowed two earned runs and only four hits through six innings.
Relievers Ryan Olson and Keegan Thompson took over for Clarkin and kept Canada hitless through the final three innings.
An RBI groundout by Gareth Morgan in the first and Josh Naylor reaching home in the fifth were all the runs Canada would earn.
Canada starter Cal Quantrill lasted just 2 1/3 innings, allowing four runs, two earned, on four hits, while the team was also hampered by three errors.
"Full marks to (the Americans). They managed ten hits, didn't make any costly errors and played a clean ball game," said Hamilton. "No shame for our guys, they battled and competed."
Canada has won gold only once at the tournament. In 1991, a team led by Stubby Clapp and Jason Dickson defeated Taiwan 5-2 in the championship game in Brandon, Man.
The Canadians won bronze in 1983, 1987, 1997 and 2006.
Despite a 9-3 loss to South Korea on Friday, the Canadians secured a spot in Saturday’s final against the Americans based on tournament standings.
Canada defeated the U.S. in extra innings earlier in the tournament.