Bengals running back Jeremy Hill, who is coming off two sub-par seasons, rushed for 26 yards on seven carries behind a revamped offensive line that has three new starters. Buccaneers QB Jameis Winston was impressive in two series, finishing 9-of-13 passing for 99 yards.
Winston helped engineer a 14-play, 92-yard opening drive after a penalty on the kick return set the Buccaneers back to their own 6-yard line. But, two straight incompletions on corner routes to Mike Evans resulted in Robert Aguayo's 20-yard field goal, putting Tampa Bay ahead 3-0.
The drive consumed more than six minutes and featured a 19-yard completion from Winston to tight end Cameron Brate. There also were a couple missed tackles by the Bengals defense, one by linebacker Vontaze Burfict.
Evans had four catches for 58 yards.
The Bengals drove 65 yards on their first possession, which ended when Vincent Hargreaves intercepted an Andy Dalton pass at the 5-yard line.
That was the final play for Dalton, who finished 4 of 5 for 38 yards and a pick.
Ryan Fitzpatrick replaced Winston and led a 62-yard drive ending with his 6-yard TD run in the second quarter. Tampa led 9-3 after the missed PAT.
Bengals third-string QB Jeff Driskel was impressive in the second half, rushing for a team-leading 36 yards including an 18-yard TD. Driskel's 8-yard scoring pass to rookie receiver Josh Malone made the score 20-12. Driskel was 8-for-9 for 97 yards.
The kicking competition for both teams heated up on Friday.
The Bengals' Randy Bullock kicked field goals of 49 and 54 yards. Fifth-round draft choice Jake Elliott kicked a 45-yarder late in the first half.
Aguayo had the 20-yard field goal on the Buccaneers' opening drive but later missed a 47-yarder and an extra-point attempt. Nick Folk kicked a 45-yard field goal in the third quarter to cut Tampa's deficit to 13-12.
Ryan Griffin, the Buccaneers' third quarterback, suffered a shoulder injury in the fourth quarter and did not return.