MINNEAPOLIS (AP) -- Rookie Doug Martin ran for 123 yards and caught a 64-yard touchdown pass, one of three thrown by Josh Freeman, and the Tampa Bay Buccaneers led the Minnesota Vikings 30-17 after three quarters Thursday night.
Martin had 202 total yards and took a screen pass all the way on the fourth play of the second half to give Tampa Bay a 27-10 lead.
After Connor Barth's third field goal made it 30-10, Adrian Peterson had a season-best 64-yard touchdown run that gave Minnesota some hope and the game picked up in intensity.
Jared Allen and Donald Penn traded shoves after one play that left Minnesota's All-Pro with a facemask penalty and a bashed-up nose after Tampa Bay's Pro Bowl left tackle pried Allen's helmet off and got a personal foul of his own. Allen was yelling at Penn after the whistle, pointing at the blood running down onto his teeth and telling him he was coming after him. Allen finished off that drive with a sack, forcing the Buccaneers to punt late in the third quarter.
A bad snap on third down forced the Vikings to another three-and-out, though, and the Bucs had the ball on their own xx as the third quarter ended.
Coming off a disappointing loss to the New Orleans Saints on Sunday, the Bucs came out strong against Minnesota's sputtering offense.
Christian Ponder hit Jerome Simpson late in the first quarter, but the wide receiver fumbled and Tampa Bay recovered at its own 46.
Tampa Bay drove into position for Connor Barth's second of three field goals, a 40-yarder that made it 13-0.
Minnesota's offense finally came to life in the second quarter thanks to Percy Harvin.
A couple of plays after picking up 32 yards on a screen, Harvin caught an 18-yard touchdown pass that cut it to 13-7.
After a Bucs' three-and-out, Harvin picked up another first down before Peterson fumbled and the Bucs recovered at Minnesota's 37.
Freeman, who has at least three touchdowns for the third consecutive week, connected with Mike Williams deep in the end zone on third-and-goal from the 3 to make it 20-7.
Martin surpassed 100 yards rushing for the first time all season by halftime, including a 41-yard gain on a delayed draw that set up Barth's 28-yard field goal that made it 3-0.
Facing third-and-10 near midfield on Tampa Bay's next drive, Freeman stood in the pocket and hit Vincent Jackson in traffic for a 26-yard gain that put Tampa Bay at the 22. After the Bucs advanced to the 1, Freeman faked a handoff and connected with Erik Lorig to make it 10-0.
The drive almost never happened because Roscoe Parrish muffed Chris Kluwe's punt, but was able to recover it on his own in the pileup.
Peterson was quiet after fumbling before exploding for his long touchdown run. Less than a year after a serious knee injury Peterson has 123 yards a week after gaining 153 in a win over Arizona.
Christian Ponder managed just 58 passing yards against Arizona and missed his first four passes as the Vikings went three-and-out on their first three possessions.
With Harvin's help, Ponder found his groove.
Facing third and 12 from his own 30, Ponder lofted a 37 yard pass that Simpson caught down the sideline to set up a 51-yard Blair Walsh field goal that made it 20-10.
Vikings cornerback Chris Cook injured his arm on Martin's touchdown catch and will not return.
With two games apiece against division rivals Chicago and Green Bay plus road trips to Seattle and Houston in the second half of their schedule, the Vikings needed to reach the midpoint of the season with some momentum.
Playing at the dome for the second time in five days was a good way to keep that, particularly given the 5-1 record for home teams in the first six Thursday night games this season.
The Buccaneers won only two of new coach Greg Schiano's first six games, but all four of their losses were by seven points or less. Thanks to Martin and Freeman, the Bucs haven't looked like a team that had to travel on a short week after a difficult loss.