HOUSTON (AP) -- Cincinnati coach Zac Taylor didn't hear a single complaint when he made his team practice in 10-degree weather on Christmas Day because the Bengals knew the preparation was important if they hoped to finally win a road game.
''It just tells you all you've got to know about the character and the resolve of this football team... I just couldn't be prouder of the work that they put in here in Week 16,'' Taylor said. ''We're out of the playoff hunt. It's easy for guys to check out right now and we haven't had a single player do it.''
It's the first road win for Taylor, who is in his second season, and the first time the Bengals (4-10-1) won away from Cincinnati since a 37-36 victory at Atlanta on Sept. 30, 2018.
''It's a big deal,'' defensive end Sam Hubbard said. ''Like I said earlier in the week, we put an emphasis on it and to actually follow up and do it is huge for us.''
The Bengals have won two games in a row for the first time this season after upsetting the Steelers 27-17 on Monday night.
The Texans were driving after Perine's second score when Deshaun Watson was sacked by Hubbard, who forced a fumble that Margus Hunt recovered. The Bengals added a field goal after that to seal the victory.
It's the third time in the past four games that the Texans have had a chance to win or tie a game late but lost a fumble instead.
''Fumbles that occur at any point in the game, you don't like them,'' interim coach Romeo Crennel said. ''But when they occur in situations where you have a chance to win, I think that's a double whammy in that case.''
The Texans led 31-27 after Darren Fells carried two defenders into the end zone at the end of a 22-yard reception with about six minutes to go.
Perine, who had a season-high 95 yards rushing, gave Cincinnati the lead when he bulled into the end zone for the go-ahead score with less than two minutes to go.
Brandon Allen returned after missing last week's game with a knee injury and threw for a career-high 371 yards with two touchdowns for the Bengals.
''You can just see in these last two weeks that this team knows how close it can be and we've finally been able to have two real close games and we put them together to get wins,'' he said. ''And we can just take that momentum and move it forward.''
Watson threw for 324 yards and three touchdowns and David Johnson ran for a season-high 128 yards and had a rushing touchdown and a TD reception as the Texans (4-11) tied a season high with their fourth straight loss.
An irate J.J. Watt went on a long rant detailing the frustrations of the season after the game, but first he summed up the play of Houston's defense on Sunday.
''We played horrendously,'' he said. ''That's harsh, but it's a fact of what we did today.''
Cincinnati took a 27-24 lead on a 48-yard field goal by Austin Seibert early in the fourth quarter.
Perine put the Bengals up 17-10 when he ran 46 yards for a touchdown early in the third quarter. It looked as if he would be stopped early in the run, but he spun away from a defender and cruised into the end zone.
The Texans tied it on a 4-yard touchdown run by Johnson on their next possession.
Cincinnati regained the lead when rookie Tee Higgins grabbed a 20-yard reception in the corner of the end zone and managed to keep both feet inbounds for the touchdown with about six minutes left in the third.
Their lead was brief as the Texans tied it again on a 2-yard scoring run by Johnson late in the third quarter.
The Bengals took an early lead when Allen found Drew Sample wide open for an 8-yard touchdown on their first drive.
Watson threw a 50-yard pass to Brandin Cooks on Houston's next possession to give the team a first down at the 7. But the offense stalled after that and the Texans settled for a 21-yard field goal to cut the lead to 7-3.
The Bengals had a chance to add to their lead in the second quarter, but Seibert's 49-yard field-goal attempt was wide left. He got another chance later in the second and his attempt from 35 was good to give Cincinnati a 10-3 lead.
A 25-yard TD reception by Cooks with two minutes left in the first half tied it at 10 at halftime.
Bengals: CB William Jackson sustained a concussion in the second quarter.
Texans: RG Brent Qvale sustained a concussion second quarter. LT Laremy Tunsil injured his foot in the second quarter and didn't return.
Bengals: Host Baltimore next Sunday.
Texans: Host Tennessee next Sunday.
More AP NFL: https://apnews.com/NFL and https://twitter.com/AP-NFL