Brees went over the 300-yard mark for the 11th time this season, breaking his own record of 10 set in 2008.
New Orleans played without running back Mark Ingram, who missed his second straight game with a toe injury, but Pierre Thomas and Chris Ivory filled the void. Thomas finished with 44 yards and a score on eight carries, while Ivory ran for 74 yards on 18 carries.
New Orleans has already clinched a playoff spot, and can lock up the NFC South Division title with a win over the Atlanta Falcons next week. The Saints have won six straight games.
Adrian Peterson returned to action for Minnesota (2-12) after missing the last three games with a high ankle sprain, and ran for 60 yards on 10 carries. But the Vikings lost their sixth straight game, the first time that's happened since 1984.