Mike Nugent's 54-yard field goal as time expired won it, but two punts and a blocked field goal also were crucial.
"We wrote a pretty good script there at the end," Bengals coach Marvin Lewis said.
The AFC North-leading Bengals (5-2) won a game for the second straight week by the same score thanks to Nugent's right foot. He made an overtime kick to give Cincinnati a win after it blew a 14-point, fourth-quarter lead at Buffalo.
"I love how confident everyone always is," Nugent said. "Nobody freaks out. I think it all begins with (Marvin Lewis) because he and his staff don't get too high or too low."
The Lions (4-3) rallied from an 11-point, third-quarter deficit and looked as if they did enough to send the game to OT, but rookie Sam Martin shanked a punt just 28 yards to midfield in the final minute.
"I thought they were going to try blocking the punt and I rushed myself," Martin said. "I was trying to put the ball on the sideline and keep it away from the returner and I pulled it."
Dalton threw two short passes to gain 15 yards and called the team's last timeout with 4 seconds left to set up Nugent's game-winning field goal.
"Pretty clutch kick, two weeks in a row," Dalton said.
Dalton was pretty good again, too.
He was 24 of 34 for 372 yards, the third-highest total of his career and threw three touchdown passes for the second straight game. He didn't have an interception to help him reach a career-high 135.9 QB rating.
After Dalton was sacked for the first and only time Sunday, Bengals punter Kevin Huber hit a perfect, 45-yard punt that pinned Detroit to its 6 with 1:43 left.
"We were in a tough spot," Stafford said. "If we would have dropped back in a pass play on that first play, I would have been in my own end zone."
The Lions gained just 17 yards, then Martin sent a punt out of bounds at the Bengals 49.
"I told him what I told the rest of the team," Detroit coach Jim Schwartz said. "This is a tough, bitter loss, and we need to learn from these mistakes and not make them again."
Detroit will work on ways to avoid allowing a player to bust through the middle of its line on a field goal because that's what Carlos Dunlap did when he blocked David Akers' kick from the Cincinnati 16, leading to a return that gave the Bengals the ball at the Detroit 40 with 2:17 left in first half.
Dalton took advantage, lofting a 12-yard pass into the back of the end zone, where only Marvin Jones could catch it with 41 seconds left in the first half.
"The biggest turnaround in the game was the blocked field goal because it ended up being a 10-point swing," Schwartz said.
Stafford was 28 of 51 for 357 yards with three TDs and didn't throw an interception.
Johnson caught nine passes for 155 yards and two TDs, the second of which was one of the most impressive of his career because he leaped to catch a 50-yard pass while surrounded by three Bengals in the end zone to make it 24-all early in the fourth.
"It was one of the best catches I have ever seen," Stafford said.
The Bengals had a pretty good pitch-and-catch combination, too.
Cincinnati scored the first time it had the ball when Dalton connected with Green on an 82-yard TD, the second-longest pass of his career, after the receiver got past cornerback Chris Houston. Green finished with six catches and 155 yards receiving.
"I put this loss on me, not anybody else," said Houston, who was benched for part of the game.
Bengals CB Leon Hall left the game early with an Achilles tendon injury. "It seems pretty significant," Lewis said. ... The Lions lost starting OTs Riley Reiff (hamstring) and Corey Hilliard (knee) during the game, but Reiff was able to return. ... Bengals DT Devon Still (elbow) and Lions CB Rashean Mathis (groin) were also hurt.