Moore's goal was the fastest in Gold Cup history and the fastest for the U.S. since Clint Dempsey scored in 30 seconds against Ghana in the Americans' 2014 World Cup opener.
Both the USMNT and Canada already were assured of advancing. The U.S. finished atop its first-round group with a 3-0 record, and it will play its quarterfinal on July 25 at Arlington, Texas against the loser between Costa Rica and Jamaica, both 2-0 going into their match on Tuesday in Orlando, Florida.
Canada finished the first round with two wins and one loss, and it will play the winner of the Costa Rica-Jamaica match.
The U.S. ended Canada's team-record eight-game winning streak during the match at Children's Mercy Park in Kansas City, Kansas. The U.S. is unbeaten against Canada in 20 home matches since 1957, and the Americans extended their winning streak against CONCACAF opponents to 13.
While U.S. manager Gregg Berhalter started two forwards in Daryl Dike and Gyasi Zardes, Canada dominated possession and had more scoring chances. Still, the U.S. improved to 38 wins, one loss and four draws in the Gold Cup group stage.
The U.S. scored when Kellyn Acosta passed wide to Sebastian Lletget, who one-timed a pass to the far post. The 24-year-old Moore got behind Tajon Buchanan and redirected the ball in from just inside the 6-yard box for his first international goal.
After fielding a starting lineup against Martinique that averaged 23 years, 84 days, the Americans' youngest in a competitive match since at least 1989, Berhalter changed four starters by inserting Sam Vines, Lletget, Acosta and Zardes.
Ayo Akinola started for Canada after making his debut against Haiti on Thursday, but he got hurt and was replaced by Jonathan Osorio in the 24th minute. The 21-year-old Akinola scored for the U.S. against El Salvador in his debut in December, then changed affiliation.
Reggie Cannon, having recovered from a hamstring injury, made his first appearance of the tournament when he replaced Moore at right back in the 58th minute.