HOUSTON -- Andre Johnson hung his head, furious at himself for fumbling near the goal line.
Coaches urged him to snap out of it. If Houston was going to win, they told him, he'd have to make a play.
They were right.
Johnson had an acrobatic 23-yard reception on fourth-and-10 that kept the last drive alive and Matt Schaub ran for a 3-yard touchdown with 3 seconds left to lead the Texans to their first win, a 29-28 victory over the Miami Dolphins on Sunday.
The Dolphins (2-3) had knocked down consecutive passes in the end zone before Schaub ran for the score on fourth down. The 2-point conversion failed, but Houston had enough points.
Houston (1-4) won in dramatic fashion a week after blowing a 17-point fourth-quarter lead in a 31-27 loss to the Colts.
Johnson led the way with a franchise-record 178 yards receiving with one touchdown.
"That fourth-down play happened, so I was able to redeem myself," Johnson said. "I think this win shows what we can do and hopefully it can be the start of something special."
Said safety Yeremiah Bell, who covered Johnson on the play: "I felt like I should have knocked it down. ... I didn't make the play and as a result it ended up helping them win the game."
The game was still in question after that catch, but the Texans believe it turned the momentum in their favor.
"He was covered pretty good, but he made an unbelievable catch," Kevin Walter said. "After that I said, 'We're gonna win this game.' We were all confident after that."
Ronnie Brown's 6-yard run with less than 2 minutes remaining gave Miami the lead. Chad Pennington was intercepted by Eugene Wilson moments earlier, but Wilson fumbled on the return and Miami recovered, giving the Dolphins a new set of downs to set up Brown's score.
"It hurts," Pennington said. "I mean, it hurts. It's one of those games ... where you just don't have any answers."
Schaub finished 22-of-42 for 379 yards with one touchdown and two interceptions. Houston's 485 yards is a franchise best and it was Schaub's second straight 300-yard game.
Schaub found some redemption in this game, too, after throwing interceptions on Houston's first two possessions.
"I just had to find a way to get in there," Schaub said of his touchdown run.
Houston had taken its first lead at 20-14 when Johnson scored on a 12-yard pass early in the third quarter. Johnson set up that score when he caught a short pass and ran 61 yards.
The Dolphins answered when Ricky Williams scored his first touchdown since 2005 on a 5-yard run.
Houston's sloppy play in last week's late collapse against the Colts bled over into the early part of this game. The Texans' last three possessions a week ago ended in turnovers and their first two in this game ended the same way.
That wasn't the last of the mistakes for the Texans. They trailed by one point and were driving late in the third quarter when Allen forced a fumble by Johnson that Bell recovered in the Miami end zone.
On Houston's first possession, Joey Porter hit Schaub as he threw and it was intercepted by Akin Ayodele. Andre' Goodman picked off Schaub on Houston's next drive, and this time the Dolphins made sure Houston paid.
Ronnie Brown took the snap and handed off to Williams, who shoveled it to Pennington in the backfield. Pennington hit a wide-open Patrick Cobbs for the 53-yard touchdown.
Texans fans booed heartily after the first interception and some chanted "We want Sage" for backup Sage Rosenfels after the second. The few fans that were left for the winning score replaced those chants with roars of approval for Schaub.
"That's part of being a quarterback," coach Gary Kubiak said. "You get your butt booed in the first quarter and you come back and win the game in the fourth."
Cobbs pushed the lead to 14-3 when he took a screen pass and rumbled 80 yards early in the second quarter. The third-string running back had gained just 19 yards entering the game, but starred in the state where he led the nation in rushing in 2003 at North Texas.
Kris Brown had field goals of 27 and 33 yards and Jacoby Jones cut Miami's lead to 14-13 with a 70-yard punt return for a touchdown in the second quarter, his first career TD.
He ended the return by leaping into the first row of the stands where his mother sat wearing her son's jersey.
"I was pointing to mama," Jones said. "I saw her at about the 25-yard line. She was smiling."
Dolphins LB Porter had a sack on Sunday to bring his total to 6 1/2 this season, surpassing last season's 5½ sacks. ... Texans DE Mario Williams had two sacks and forced a fumble. It was his second consecutive two-sack game.