The Cardinals kept their season alive with one fourth-quarter comeback after another. The most improbable one yet got tripped up at the goal line.

And, with that, Arizona's playoff chances ended.

John Skelton threw two touchdown passes in the fourth quarter on Saturday, but a wide-open Early Doucet tripped and fell in the end zone on a pass that could have tied the game, allowing the Cincinnati Bengals to hold on for a 23-16 victory that ended Arizona's four-game winning streak.

The slim playoff chances vanished, too.

"Yeah, we're a second-half team," Skelton said. "That's how it has been all year. But in the end, it was too little, too late."

The Cardinals (7-8) didn't even cross midfield until the fourth quarter. All they could do was hold their heads in disbelief as the clock ran out on them.

"This one hurts," defensive end Calais Campbell said. "We poured our hearts out, but we dug too deep of a hole to get out of. We had opportunities. It's a tough loss."

The Bengals (9-6) secured only their third winning record in the last 21 years and moved into position to clinch the final AFC wild card berth. They can win that by beating Baltimore at home next Sunday.

Andy Dalton threw two more touchdown passes, becoming only the fourth rookie to have 20 in a season.

Dalton threw an 11-yard touchdown pass to Jermaine Gresham and a 19-yarder to Jerome Simpson, who did a somersault over a defender and landed on both feet in the end zone. Dalton joined Peyton Manning (26), Charlie Conerly (22) and Dan Marino (20) as the only NFL rookies to throw 20 touchdowns.

Down 23-0 heading into the fourth quarter, the NFL's best comeback team nearly pulled off its biggest one yet. Arizona took advantage of Cedric Benson's two fumbles, getting a pair of touchdown passes by Skelton and Jay Feely's field goal with 3:16 left.

The Cardinals then had their chance to pull even. The Bengals ran an all-out blitz on fourth down from the Cincinnati 17-yard line, and Doucet wound up uncovered at the goal line. Skelton lofted the ball into the end zone, but Doucet tripped and fell with 1:12 to go.

"It was a blitz and nobody was there," Doucet said. "It was one of those deals where I hadn't hooked it up and my feet got tangled. It's a play I should've made. It was my fault. That's a play I normally make."

Cincinnati's defense dominated the first three quarters. Arizona didn't cross midfield until Skelton completed a pass with 13:25 to go, but piled up 208 yards in the final quarter.

"The first three quarters were forgettable, to say the least," said Larry Fitzgerald, whose 30-yard touchdown catch got the comeback going.

Skelton started for the second consecutive week in place of Kevin Kolb, who hasn't fully recovered from a concussion. Skelton was 23 of 44 for 297 yards with three interceptions and five sacks that helped the Bengals get the 23-0 lead.

It could have been worse. Mike Nugent, the NFL's most accurate kicker, missed field goals of 35 and 48 yards in the first half.

Arizona has rallied from fourth-quarter deficits six times this season, one shy of the NFL record. The Cardinals have won three games in overtime, tying the league record.

They couldn't do it one more time.

Dalton was 18 of 31 for 154 yards and two touchdowns on a sunny, 39-degree afternoon in front of only 41,273 fans. The Bengals have sold out only one of their seven home games, when the Steelers brought thousands of fans.

Dalton's second touchdown pass had a highlight finish.

Simpson got open for a catch-and-run to the goal line. With Daryl Washington between him and the end zone, Simpson jumped and twirled past the linebacker, landing on both feet in the end zone and raising both arms like a triumphant gymnast.

"One of the key parts for me was I stuck the landing," Simpson said. "I stuck the landing like a gymnast. That was probably one of the most surprising of all the plays in my career. It was pretty awesome, I thought."

For most of the game, the Cardinals couldn't do anything right. Rookie cornerback Patrick Peterson picked off a Dalton pass in the third quarter, but the interception was nullified by Arizona's second roughing-the-passer penalty of the game.

Worse, Peterson hurt his left hamstring on the play, pulling up on the return. The first-round pick left the game and didn't return. He wore a protective boot after the game.

"He's got a strain, it's not a tear," coach Ken Whisenhunt said. "We're fortunate that it doesn't appear to anything long-term."

Notes: Beanie Wells became the first Cardinal to run for 1,000 yards and 10 touchdowns in a season. ... After the game, the Bengals made a buy-one, get-one-free offer to season ticket holders, trying to fill the stadium for the final game. ... A.J. Green, playing with a strained right shoulder, had two catches for 25 yards. He passed Cris Collinsworth's club record for a rookie with 1,013 yards on the season.