GLENDALE, Ariz. -- If the Houston Texans didn't think they could fall any further, they found out Sunday that they could.
The Arizona Cardinals got two touchdown passes from Carson Palmer, scored a defensive touchdown and blocked a field goal while holidng off the Texans 27-24 at University of Phoenix Stadium.
Case Keenum threw three touchdown passes for Houston, but it wasn't enough as the Texans (2-7) lost their seventh consecutive game -- the longest losing streak in franchise history.
Already without head coach Gary Kubiak following his collapse last Sunday night upon suffering a mini-stroke, the Texans also learned they would be without running back Arian Foster for the remainder of the season as he prepares to have surgery to repair a bulging disk in his back.
Foster was ruled out of the Arizona game on Friday.
The Cardinals (5-4) earned their second consecutive win, and they remain in the hunt for an NFC wild-card playoff spot.
Palmer completed 20 of 32 passes for 241 yards. He was intercepted once and lost a fumble when he was stripped and sacked by defensive end J.J. Watt, but the quarterback was effective.
The Cardinals grabbed a 7-0 lead on the first play from scrimmage when linebacker John Abraham sacked Keenum deep in Houston territory, causing Keenum to lose the ball. Arizona linebacker Matt Shaughnessy picked it up and returned it 6 yards for his first career touchdown.
It was the 20th turnover forced by Arizona's defense this season.
Palmer went 5-for-5 for 60 yards in directing a touchdown drive on the Cardinals' second possession. He capped it by completing a 12-yard pass to Rob Housler for the third-year tight end's first NFL touchdown.
The Texans stayed squarely in the game, though, as Keenum found wide receiver Andre Johnson for a 7-yard scoring pass and later, tight end Ryan Griffin for a 2-yard touchdown.
Johnson did a remarkable job keeping both feet in bounds during his touchdown grab, dragging his right foot before falling out of the end zone with cornerback Patrick Peterson there to defend.
After the Cardinals took a 27-17 lead in the fourth quarter on Palmer's 19-yard fade pass to wide receiver Andre Roberts, Johnson came up with another acrobatic catch for his second touchdown and fifth in the past two weeks.
Arizona running back Rashard Mendenhall had the ball stripped and taken away by Watt, giving the Texans the ball at the Cardinals 5-yard line. On third down, Keenum threw high toward Johnson, who outreached Peterson in the end zone and once again, somehow found a way to keep both feet in bounds for the score.
The touchdown pulled the Texans to within 27-24 with 4:34 left in regulation.
After Houston forced Arizona to punt and got the ball back with 2:06 remaining, Keenum could only complete one more pass. The Cardinals took over on downs and ran out the clock.
Keenum finished 22-for-43 for 201 yards and no interceptions. Running back Ben Tate, seeing the bulk of the action in place of Foster, rushed for 56 yards on 15 carries.
Running back Andre Ellington gained 55 yards on 11 carries for the Cardinals. In the team's previous game, a win over the Atlanta Falcons, he ran for 154 yards and a touchdown.
NOTES: The Cardinals elevated rookie Tyrann Mathieu to the starting free safety spot. He took over in the base defense for Rashad Johnson. ... The Texans lost CBs Elbert Mack (hamstring) and Kareem Jackson (rib) to first-half injuries, and they did not return. ... With two sacks on the day, Cardinals DE John Abraham moved into 12th place on the NFL's all-time sacks list (127). ... Cardinals CB Justin Bethel blocked a 40-yard field goal attempt by Texans K Randy Bullock right before halftime.