Forty-six was not enough.
The Saints scored a go-ahead touchdown with 53 seconds remaining, the fourth lead change of the day, and had the 49ers on the ropes with a fourth-and-two with 39 seconds remaining. But New Orleans missed on two two-point conversions, including one after their final touchdown, and the 49ers kicked the game-winning field goal on the final play.
Jimmy Garoppolo hit George Kittle on for a 39-yard gain on that fourth-and-two play, with C.J. Gardner-Johnson missing a tackle that would have ended the game. Marcus Williams added a facemask penalty at the end of the play. It set up San Francisco in field goal range.
Robbie Gould kicked a 30-yarder as time expired to give the 49ers a 48-46 victory in the game of the season in the NFL.
The teams combined for 94 points and 981 yards. The Saints punted once, threw an incompletion on a fake punt that they thought they should have gotten defensive holding and Alvin Kamara lost a fumble. The 49ers punted three times and Garoppolo threw an interception.
The other 16 possessions ended in points.
The 49ers, who lost a 20-17 heartbreaker to the Ravens on the final play last week, moved to 11-2. The Saints fell to 10-3.
Garoppolo finished 26-of-35 for 349 yards with four touchdowns and the interception. Brees went 29-of-40 for 349 yards and five touchdowns.