Detroit scored two touchdowns in the final 77 seconds only to miss on a chance to force overtime when a two-point conversion failed with 10 seconds remaining.
Green Bay improved to 7-3 and moved within a half game of the Chicago Bears in the race for the NFC Central title. Chicago will play Minnesota Sunday night.
Playing like the NFL's worst team, the Lions committed three turnovers deep in Green Bay territory and trailed, 29-13, in the fourth quarter.
But behind backup quarterback Mike McMahon, the Lions almost staged of the great comebacks in their long history of hosting a Thanksgiving Day game.
Lamont Warren scored on a one-yard run with 1:17 remaining and the Lions' rookie quarterback ran for the conversion, pulling Detroit within 29-21.
On the ensuing onside kick, Jason Hanson tricked Green Bay, kicking with his left foot. He popped the ball into the air and down to the 35. When a Packer failed to recover, Todd Lyght pounced on the ball for the Lions at the Green Bay 31.
Four plays later on a fourth and four play, McMahon found Scotty Anderson in the end zone for a 29-yard touchdown pass with 10 seconds remaining. But the Lions could not convert on the two-point try. McMahon rolled to his left and threw across his body into the end zone looking for tight end David Sloan, but the ball fell incomplete.
"It was just a regular two-point play," McMahon said. "I was going to sprint right and make something happen. I thought I had the corner first, but they're just too fast in this league."
Detroit (0-10) remained the NFL's only winless team and is within one defeat of matching the 1942 squad for the worst start in club history.
Ahman Green rushed for 102 yards and a touchdown and had a 35-yard scoring reception for Green Bay (7-3).
Favre threw a one-yard touchdown pass to David Martin with 18 seconds left in the first half and found Green on the 35-yarder on the Packers' first possession of the second half.
"This is a Thanksgiving I'll never forget," Packers coach Mike Sherman said. "The Detroit Lions gave us everything we could handle. When we thought we had it, we didn't have it. They fought hard."
"It's been that type of game here in Detroit in this building for 10 years," said Favre, who has a 4-7 record at the Silverdome. "We handled it better. It was a great win, well executed."
Holding a 24-13 lead, the Packers built on that advantage early in the fourth quarter. Speed rushing end Kabeer Gbaja-Biamila knocked the ball out of Charlie Batch's right hand. The ball trickled into the end zone and Warren fell on it for a safety.
Batch struggled for most of the afternoon, completing eight of 19 passes for 118 yards and one interception. He left in the fourth quarter with a groin injury.
Ryan Longwell kicked a 39-yard field goal with 7:06 remaining, extending the Packers' lead to 29-13.
McMahon came on for Batch and engineered an 18-play, 71-yard drive. Warren capped the march that took nearly six minutes with his one-yard run with just over a minute left.
With most of the Silverdome crowd having departed, the Lions almost rallied to send the game into overtime.
McMahon hit Warren with an apparent 29-yard touchdown pass with 43 seconds left. Warren looked to come down inbounds just inside the right pylon, but the play was ruled incomplete and was not reviewed.
After the apparent missed call, Lions president Matt Millen could be seen visibly upset in the press box.
But McMahon, a fifth-round pick out of Rutgers, came through two plays later by finding Anderson, who got behind cornerback Mike McKenzie in the end zone. McMahon, however, could not convert the conversion.
"I was ready to go into overtime," Favre said. "People started turning their TVs off and leaving the dome and all of sudden Detroit is back in it. I didn't want to fall victim to that, but we almost did."
McMahon finished nine of 20 for 89 yards, perhaps stating his case to become the club's starting quarterback for the rest of the season.
Like they have all season, it did not take the Lions long before they committed their first miscue.
On their first offensive play, the Lions appeared to have a big play when Batch found Johnnie Morton over the middle. But heading down the right sideline for an apparent touchdown, Morton was caught from behind by rookie Bhawoh Jue and had the ball punched out of his arm. The ball bounced into the end zone and Tyrone Williams recovered for a touchback.
The Packers converted that early miscue, moving 80 yards in five plays. Green capped the march, busting free for a 26-yard touchdown run.
Jason Hanson kicked a 33-yard field goal with 3:08 left in the period, getting Detroit on the board. Fullback Cory Schlesinger put the Lions in position, running 26 yards on a fake punt to the Green Bay 20.
Hanson booted a 54-yard field goal early in the second quarter before Longwell converted from 46 yards with 12:05 left before intermission, giving Green Bay a 10-6 advantage.
A big defensive play by the Lions helped them take the lead later in the second quarter.
Linebacker Chris Claiborne busted through the line, sacking Brett Favre and jarring the ball loose. Defensive end James Hall picked the ball up and rumbled eight yards for a touchdown, giving the Lions a 13-10 lead 3:43 left in the half.
But Favre quickly atoned for that miscue, moving the Packers 81 yards in nine plays. He capped that march with 18 seconds left in the half, finding tight end David Martin open in the back of the end zone for a one-yard touchdown and a 17-13 lead.
The Lions had a chance to recapture the momentum in the third quarter, moving inside the Packers 20 on their first possession of the half.
But on a third and three play from the 18, Batch was intercepted by linebacker Nate Wayne, who returned the ball 35 yards.
Four plays later, Favre found Green with a screen pass that the speedy running back turned into a 35-yard touchdown, making it 24-13.
Favre finished 18 of 26 for 252 yards and two touchdowns.
James Stewart returned for the Lions after missing the last five games with an ankle injury and rushed for 102 yards on 14 attempts.