It was the second straight late defensive meltdown at home by the Packers (5-8), who came into Sunday's game holding on to playoff hopes in the mediocre NFC North.
The Texans won despite committing four turnovers, perhaps the byproduct of a warm-weather team playing in temperatures that hovered around 3 degrees at kickoff. Still, the Texans (6-7) managed their second victory in six days after beating Jacksonville on Monday night.
Schaub was 28 of 42 for 414 yards with two touchdowns and an interception in his return. He showed plenty of mobility, completing pass after pass on rollouts and bootlegs.
Texans rookie running back Steve Slaton rushed for 120 yards and caught three passes for 40 yards, a continuation of his 130-yard, two-touchdown performance against Jacksonville.
Aaron Rodgers was 19 of 30 for 295 yards for Green Bay, with two touchdowns and an interception. Ryan Grant rushed for 104 yards and a touchdown.
With the Texans trailing 14-13 and driving early in the fourth quarter, Schaub nimbly rolled to his left and threw an 11-yard touchdown pass to Andre Johnson to regain the lead.
Schaub then rolled to his right on the 2-point conversion attempt to hit Johnson again, putting Houston ahead 21-14 with 10:05 left in the game.
The Texans' defense then came up with a stop, but Houston's Jacoby Jones fumbled a punt near midfield and the Packers drove for a game-tying 9-yard touchdown pass from Rodgers to wide receiver Jordy Nelson.
New Packers punter Jeremy Kapinos later pinned the Texans at their 3-yard line with less than two minutes left, but Schaub hit fullback Vonta Leach, wide receiver David Anderson and tight end Owen Daniels for big gains to set up Brown's field goal as time expired.
Houston led 10-7 at halftime, then extended its lead to 13-7 with Brown's 41-yard field goal early in the third quarter. But Slaton's fumble late in the third quarter cost the Texans a chance to take a commanding lead.
Houston punter Matt Turk turned a potential blocked punt into an 18-yard gain and a first down -- a potentially back-breaking play for the Packers, especially after Houston continued its drive to the Green Bay 16. But Slaton fumbled the ball on the next play.
After struggling for most of the afternoon, Rodgers dropped a precise pass into double coverage for 63-yard completion to Greg Jennings on the final play of the third quarter. Grant ran in for a 6-yard touchdown on the next play, giving the Packers a 14-13 lead. The Texans dominated the first half, as Schaub announced his return right away.
Facing a heavy pass rush on the third play of the game, Schaub lofted the ball deep down the left sideline. Wide receiver Kevin Walter adjusted to the underthrown ball to make the catch, then eluded defensive backs Tramon Williams and Nick Collins to jog into the end zone for a 58-yard touchdown.
The Packers were on the verge of a two-touchdown deficit early in the second quarter, but linebacker Desmond Bishop stripped the ball from Daniels just short of the goal line and cornerback Tramon Williams made the recovery.
Another turnover later in the quarter cost Houston points. With the Texans facing first-and-10 at their own 23, Williams jumped an out route to Davis for an interception. Two plays later, Rodgers threw a 20-yard touchdown to tight end Donald Lee to tie the game at 7 with 5:07 left in the half.
But Williams gave up a big play on the next series, a 46-yard pass from Schaub to Walter that set up a 30-yard field goal by Brown, giving the Texans a 10-7 lead.