Jessie Fleming’s second half penalty was enough to see Canada dump the reigning world champions out of the gold medal match.
The USWNT will now play in the bronze medal match on Thursday.
The USWNT suffered a major setback in a cagey first-half when goalkeeper Alyssa Naeher was forced off with a knee injury after 30 minutes.
They performed better in the second half and forced Canada goalkeeper Stephanie Labbe into good saves from Carli Lloyd and Julie Ertz.
But with 15 minutes remaining, Canada were awarded a penalty through VAR after Tierna Davidson fouled Deanne Rose in the box.
Fleming converted her spot kick and although Lloyd hit the crossbar late on, Canada held on to win the game.
Canada will play either Australia or Sweden in the gold medal match on Friday.