DeAndre Levy pulled Joe Webb's facemask as the ball slipped away from the Minnesota quarterback.

There was no flag — and more importantly, no touchdown. Maybe this was the break the Detroit Lions have been waiting on for over a decade.

"Our defense was beaten up, but they hung in there and got a win," Detroit's Matthew Stafford said. "That's all that matters right now."

Webb's fumble on the game's final play halted an impressive rally by the Vikings and enabled the Lions to hold on for a 34-28 victory Sunday. Replays showed Levy grabbing Webb's facemask just after the ball popped loose, but no penalty was called and Detroit wasn't apologizing.

"We get a lot of calls called against us," Levy said. "So, they owed us one if I did."

If the season were to end today, the Lions (8-5) would make the playoffs for the first time since the 1999 season. They play at Oakland next weekend, then host San Diego before finishing the regular season at Green Bay.

"One win down, and we've got three left to get," Stafford said.

Stafford threw two touchdown passes to help the Lions to a 28-7 second-quarter lead. Trailing 31-14 in the third, Webb replaced Vikings starter Christian Ponder. Webb ran for a 65-yard touchdown and threw a 2-yard scoring pass to Toby Gerhart to pull the Vikings (2-11) back within six. Minnesota then drove all the way to the Detroit 1 with 9 seconds left.

"He has a choice — either throw the stop-fade or throw the fade," Vikings coach Leslie Frazier said. "If not, throw it out of bounds and still have a chance."

Webb wasn't able to do any of that because of Levy's pressure. After the fumble, linebacker Stephen Tulloch batted the bouncing ball toward midfield. Webb raced back to try to pick it up, but he wasn't able to hold on, and Detroit's Cliff Avril eventually recovered all the way back in Minnesota territory.

"That was the longest play ever," Avril said.

Frazier said he hadn't seen a replay of the facemask yet, but had heard about it.

"People have told me that they grabbed Joe's facemask, and that was one of the reasons he wasn't able to get his head up to make the throw," he said.

Webb's performance was the only reason the Vikings were even in a position to win after falling way behind early on. Ponder threw three interceptions, and his fumble on Minnesota's first offensive snap was recovered by Tulloch in the end zone for a 7-0 Detroit lead.

It was 28-7 after Ponder's interception was returned 30 yards for a touchdown by Alphonso Smith early in the second quarter. When Ponder threw another interception on the first drive of the second half, Frazier had seen enough and made the switch.

"I gave them 17 points in the first half," said Ponder, who had been questionable for the game because of a hip pointer. "I think everyone wants to play well. No one wants to be benched. I wasn't playing well enough. I was hurting the team more than I was helping the team. I was just excited to see Joe go out there and bring us back — and one play from winning the ballgame."

Frazier indicated the change wasn't permanent.

"If Christian's healthy, he's our No. 1 quarterback," he said.

Both teams were missing stars. Detroit defensive tackle Ndamukong Suh was finishing a two-game suspension for stepping on a Green Bay lineman in a Thanksgiving game. The Vikings were without running back Adrian Peterson for a third straight game because of a sprained left ankle. They still outgained the Lions 425-280, but were undone by their six turnovers.

It was Minnesota's fifth straight loss.

Stafford was 20 of 29 for 227 yards. He threw first-quarter touchdown passes of 57 yards to Titus Young and 12 yards to Brandon Pettigrew.

Webb came on right as Detroit's defense started to crack under the weight of a number of injuries. Detroit was already missing starting defensive backs Louis Delmas and Chris Houston because of knee injuries. Cornerback Aaron Berry then left with an apparent right shoulder injury.

When the Vikings reached the 1 in the final seconds, it looked as if they would have time for at least two plays, but the turnover ended the game then and there.

"Last play was all-out blitz and we were going to try to make sure that he couldn't run it and we had a chance and we made a play," Detroit coach Jim Schwartz said. "I was so nervous when that ball was bouncing around, just thinking that he might pick it up and run around again, but we were able to get on it and finish that game."

Notes: Lions WR Calvin Johnson was held to three catches for 29 yards. ... Ponder was 11 of 21 for 115 yards and two touchdowns. ... Webb ran for 109 yards and was 12 of 23 for another 84. ... Minnesota's Percy Harvin had a career-high 10 receptions for 109 yards and a TD. ... Vikings DE Jared Allen had three sacks for the second time against Detroit this season, putting him at 100½ sacks over his eight-year career.