Martin scored two of Tampa Bay's four touchdowns and accounted for 214 yards, helping the Bucs win for the second time in three games after they had lost three straight contests. Tampa Bay is 3-4 for the season, but trails NFC South-leading Atlanta by 3 1/2 games.
The Vikings reached the midway point of their season with a 5-3 record and are a game behind Chicago in the NFC North.
Tampa Bay scored the contest's first 13 points and held a 20-10 advantage at the break. The Bucs then took control on the fourth play of the third quarter when Freeman threw a short pass to Martin, who turned it into a long touchdown.
Although Minnesota countered with a 64-yard touchdown run by Adrian Peterson midway through the third period that brought the Vikings within 30-17, Tampa Bay put the game away in the fourth period with an 87-yard, 16-play drive that used up more than 9 minutes. Martin finished off that march with a 1-yard run.
Tampa Bay drove 48 yards on each of its first two possessions with Connor Barth kicking the first of his three field goals and Erik Lorig catching a 1-yard scoring pass from Freeman.
Freeman also found Mike Williams on a 3-yard touchdown throw in the second quarter and was 19-of-36 for 262 yards without an interception. It was the third straight game in which Freeman had thrown for three touchdowns.
Martin ran for 135 yards on 29 carries and caught three passes for 79 more yards.
Minnesota quarterback Christian Ponder went 19-of-35 for 251 yards with one touchdown and one interception. Peterson, one week after rushing for 153 yards in a win over Arizona, picked up 123 yards on 15 carries against the Buccaneers.