DETROIT -- Teddy Bridgewater seems to be at his best when Minnesota takes on the Detroit Lions.
Bridgewater threw for a season-high 316 yards and two touchdowns to help the Vikings beat the Lions 28-19 on Sunday.
Adrian Peterson rushed for 98 yards on 19 carries as the Vikings (4-2) won an NFC North game on the road for the first time in three years.
The Lions (1-6) had an 11-point lead after Matthew Stafford threw TDs on their first two drives, but they blew it because they couldn't protect the quarterback. Minnesota had a season-high seven sacks, which also was a season worst for Detroit.
Vikings rookie Stefon Diggs had six receptions for 108 yards, including a go-ahead, 36-yard score on which he leaped from just inside the 5 and landed in the end zone in the third quarter.
Peterson had a season-long 75-yard run on the Vikings' next drive, but they stalled and settled for one of Blair Walsh's five field goals.
The Lions had a chance to make the final minutes potentially dramatic, but they turned the ball over on downs at the Vikings 1.
Minnesota had punter Jeff Locke run out of the end zone on the ensuing possession, taking a safety to stay two scores ahead with a 28-19 lead with 59 seconds left.
Detroit drove to the Vikings 36 on its final drive before turning the ball over on downs again, and getting booed by the sparse crowd that was still in Ford Field.
Minnesota had not won a division road game since winning in Detroit on Sept. 30, 2012.
Bridgewater had his best passer rating of the season in last month's 26-16 win against the Lions, and nearly matched it in the rematch.
Bridgewater was 25 of 35 and finished 2 yards short of setting a career high for yards passing. The first of his two TD passes was a 1-yard toss to Kyle Rudolph that got Minnesota within five late in the second quarter. Blair's 51-yard field goal ended the first half and cut Detroit's lead to 17-15.
Peterson, who had a season-high 135 yards in his last game against Detroit, was shut down for much of the day, but he helped the Vikings to 140 yards on the ground, compared to 77 for the Lions.
Stafford, meanwhile, didn't have much time to set up in the pocket after a strong start.
He capped the opening 75-yard drive with a 1-yard TD pass to Calvin Johnson. He connected with Eric Ebron on a 7-yard scoring pass to end an 80-yard drive on his next possession.
The rest of the game, he was getting sacked, hit and hurried. Stafford finished 18 of 26 for 256 yards with the two TDs.