Freeman's 18-yard scoring pass to Mike Williams with 2:09 left in the third quarter gave the Bucs a 20-10 lead and Tampa Bay (10-6) hung on to post its first win of the season over a team with a .500 record or better.
Freeman tossed for 255 yards, going 21-of-26 through the air, and Williams set a team record with his 11th touchdown reception of the season.
LeGarrette Blount finished up a strong rookie regular season for the Bucs, running for 66 yards to give him 1,007 yards for the year.
Tampa Bay entered the game needing a win and losses by both Green Bay and the New York Giants to make the playoffs.
Drew Brees finished with 196 yards passing with one touchdown and an interception for the playoff-bound Saints (11-5), playing into the fourth quarter before being removed.