DETROIT -- Matthew Stafford scored on a 1-yard keeper with 12 seconds remaining and Calvin Johnson had 329 receiving yards, second-most in NFL history, as the Detroit Lions edged the Dallas Cowboys 31-30 on Sunday at Ford Field.
The Lions drove 80 yards in six plays, using up just 57 seconds as Stafford knifed through the prevent defense of the Cowboys, on their winning score.
Johnson caught 14 passes and a touchdown for the Lions (5-3), who entered the day a half-game behind Green Bay in NFC North. Johnson tied Lance Alworth's NFL record with his fifth career 200-yard receiving game. He had two other receptions on which he was stopped at the 1-yard line.
Stafford passed for 488 yards and a score, though he was picked off twice. The Lions overcame four turnovers in Dallas territory, including three in the red zone.
Tony Romo threw three touchdown passes, including scoring strikes of 60 yards to Terrance Williams and 50 yards to Dez Bryant. Sean Lee made two interceptions for the Cowboys (4-4), who lead the NFC East.
Dan Bailey made a 44-yard field goal with 1:02 left to give Dallas a six-point advantage.
The Lions reached the Dallas 23 with 33 seconds left on a 40-yard pass from Stafford to Kris Durham that split the cornerback and safety perfectly. Stafford's 22-yard pass to Johnson moved the ball to the 1. Stafford rushed the offense to the line as the clock ticked down from 22 to 12 and signaled that he would spike the ball. But when Dallas defenders stood upright anticipating a clock-killing incompletion, Stafford instead extended his arms over the pile for the winning score.
Williams gathered in a short pass from Romo, slipped away from rookie cornerback Darius Slay at midfield, then eluded Glover Quin's tackle try at the 8 on his 60-yard score with 11:32 left. That gave the Cowboys a 20-10 lead.
Joique Bell's 1-yard scoring plunge cut the Detroit deficit to 20-17 with 7:38 left. The Cowboys quickly responded when Romo found Bryant along the left sideline. Bryant spun away from two defensive backs near the 20 and raced into the end zone to restore Dallas's double-digit lead.
A 54-yard catch by Johnson set up Reggie Bush's 1-yard scoring run with 3:33 left, cutting the Cowboys' lead to 27-24. Detroit got the ball back with 2:24 lead but couldn't pick up a first down. But it got an opportunity and didn't come up short.
Detroit's fourth turnover, a Johnson fumble, led to Bailey's second 53-yard field goal and a 13-7 Cowboys advantage with 3:02 left in the third. David Akers got those points back for Detroit on a 20-yard field goal with 13:13 remaining.
Sean Lee's second interception swung the momentum toward the Cowboys late in the first half. Lee stepped in front of Jeremy Ross and returned the Stafford turnover 74 yards to the 4-yard line.
Bryant, who had been blanked to that point and had multiple emotional outbursts on the sideline, made a one-handed grab on third-and-goal from the 5 to give Dallas a 10-7 lead with 46 seconds left.
Johnson had six catches for 156 yards before halftime, including an 87-yard catch-and-run to set up Detroit's first score. Johnson ran a short curl in at his own 17, eluded the tackle attempt of Brandon Carr and broke free until Jeff Heath knocked him out of bounds at the 3. On fourth-and-goal, Johnson cut in from the right side again and made a 2-yard scoring grab.
Bailey's first 53-yard field goal with 5:39 left in the half put Dallas on the scoreboard.
NOTES: Cowboys star DE DeMarcus Ware missed his second straight game with a thigh injury. He had a streak of 134 consecutive starts snapped the previous week. Starting RB DeMarco Murray (knee) and WR Miles Austin (hamstring) were also inactive. ... Stafford surpassed the 15,000-yard mark in his 53rd career game, reaching that passing milestone quicker than any player in NFL history. Dan Marino, Kurt Warner and Marc Bulger hit 15,000 yards in their 56th career games. ... Johnson has three career receptions of 85 or more yards.