Detroit appears to have a defense and running game to complement Stafford and the rest of the offense in 2017.
Ameer Abdullah ran for a career-high 94 yards and a touchdown, and the Lions took advantage of three second-half fumbles by Minnesota to beat the Vikings 14-7 on Sunday.
Second-year defensive end Anthony Zettel had two sacks, a fumble recovery and four quarterback hurries, and Detroit held Minnesota scoreless in the second half on just 120 yards.
"Our defense is pretty good," said Lions receiver Golden Tate, who had three catches for 29 yards. "They are showing up week-in and week-out. It's hard to win on the road against a division opponent like that. We will take 3-1 going back home."
Vikings rookie running back Dalvin Cook had 66 yards rushing and a touchdown as Minnesota took a 7-3 lead at halftime, but Cook left with a knee injury early in the third quarter when Detroit started its comeback.
Vikings head coach Mike Zimmer said there is concern that Cook's injury might be to an ACL. He is scheduled for an MRI.
"I told him he's not the first great running back to have an ACL, if it is one, and come back pretty good," Zimmer said. "Dalvin will have a great career."
Minnesota (2-2) played its third game without starting quarterback Sam Bradford, who has a knee injury.
Linebacker Tahir Whitehead recovered two of the fumbles for the Lions, who pulled even with Green Bay in the NFC North. The Vikings had 284 total yards after entering the game with the league's second-best offense, averaging 400.3 yards per game.
"The guys play hard and we've been playing good defense except for a little hiccup in the last ball game," Detroit head coach Jim Caldwell said. "But other than that, our guys have been hanging in there and doing a good job. We're taking the ball away and that's one of the things that made a tremendous difference today.
"We were able to cause some havoc with our guys knocking the ball loose."
The Lions have 11 takeaways this season and lead the NFL with a plus-nine turnover margin.
Stafford was 19-of-31 passing for 209 yards and a two-point conversion through the air as Detroit scored 11 points off turnovers.
Minnesota's defense had six sacks and held the Lions to 251 total yards, but the Vikings went without a takeaway as four possible interceptions were dropped.
On the opening drive of the second half, Vikings running back Jerick McKinnon fumbled an exchange with Cook following a direct snap. It was McKinnon's first career fumble, snapping a streak of 442 attempts without one. Detroit kicked a field goal to draw within 7-6.
Cook's injury and fumble occurred on the next drive, and the Lions countered with Abdullah's touchdown and a two-point conversion pass to TJ Jones for the lead.
"It definitely makes us more diverse and more potent," Abdullah said of the running game. "I feel like if we have a solid run game, we know what we have outside and we know what we got at quarterback. Consistency is what I am looking for."
Abdullah left late in the game with an unspecified foot injury, but said, "It's good."
Minnesota drove for the potential tying score late in the fourth quarter, but on third-and-goal from the 3-yard line, Zettel was unblocked and sacked Keenum for the second time in the game. Keenum's fourth-down pass was high and out of the back of the end zone.
"We just try and bring pressure, and dominate up front and just muddy the pocket," Zettel said. "I think we did a good job."
The Vikings got the ball back with 1:51 remaining. But on the first play of the drive, Adam Thielen fumbled after a first-down reception and the ball was recovered Whitehead.
"We knew it was a great defense and I thought that we had opportunities," Thielen said. "I thought we moved the ball really well. We just can't have turnovers. That's how you lose games in this league."
NOTES: Detroit rookie LB Jarrad Davis missed his second straight game because of a concussion and neck injury. WR Kenny Golladay was also out with a hamstring injury. ... The Lions lost another linebacker, Paul Worrilow, to a knee injury on the first play of the game. Worrilow didn't return. ... Vikings WR Adam Thielen caught his league-leading seventh pass of at least 20 yards this season. ... Minnesota DE Danielle Hunter, who had 12.5 sacks last season, had his first two sacks of the season. DE Everson Griffen had a sack for the fourth straight game, and DT Linval Joseph and LB Eric Kendricks also had sacks. ... Vikings K Kai Forbath missed a field-goal attempt in the third quarter, snapping a streak of 21 straight conversions since signing with Minnesota.