Kendall Hunter ran 7 yards for the game's only touchdown with 3:59 to go Sunday, rallying the 49ers to a 13-8 victory in front of the Cincinnati Bengals' smallest crowd for a home opener in 30 years.
Hunter's run completed the only noteworthy drive by the 49ers (2-1), who didn't even cross midfield until midway through the third quarter.
Cincinnati (1-2) was limited to a pair of field goals by Mike Nugent during rookie quarterback Andy Dalton's first dismal performance. He threw two interceptions in the fourth quarter, the first of his career.
There were only 43,363 fans at 65,500-seat Paul Brown Stadium, the Bengals' smallest crowd for a home opener since they played at Riverfront Stadium in 1981.
The 49ers sent them heading for the exits when Reggie Smith intercepted Dalton's forced throw with 1:45 left.
David Akers kicked three field goals for San Francisco, including a 53-yarder after Dalton's first interception, pushing the lead to 13-6. After Smith intercepted Dalton again with 1:45 to go, punter Andy Lee ran out of the end zone for a safety to finish it off with 2 seconds left.
It was a satisfying start to the 49ers' weeklong stay in the Buckeye State. They'll practice at Youngstown State the next few days, then head to Philadelphia for their next game.
An ugly arrival ended with Alex Smith's only good moments. He led a 10-play, 72-yard drive, hitting tight end Vernon Davis with a 20-yard pass on a misdirection play to set up the winning touchdown.
Until the closing minutes, it appeared the 49ers had forgotten to pack their West Coast offense. Ugliness abounded.
Running back Frank Gore fumbled to set up Cincinnati's field goal for a 6-3 lead in the fourth quarter. He also had a pass hit him in the facemask. Referee Jerome Boger said one 49ers false-start penalty was on "the entire offensive line."
The late drive saved them. Smith was under constant pressure and finished 20 of 30 overall for 201 yards and five sacks. The 49ers blunted drives with penalties, and Kevin Huber's punts pinned them at their own 10, 11, 12, 14 and 17, leaving too much ground for one of the NFL's least-productive offenses to cover.
Also, the 49ers were missing receiver Braylon Edwards, who hurt his right knee during an overtime loss to Dallas last Sunday.
The Bengals were at full-strength after deciding to let receiver Jerome Simpson play. He missed two days of practice because he's the focus of an investigation into a drug shipment to his home. He got into the game on the opening series and finished with only one catch for 6 yards.
Dalton had passer ratings above 100 in his first two starts, but repeatedly forced throws against the 49ers' defense. He went 17 of 32 for 157 yards and a rating of 40.8.