Carlos Quentin made amends for an earlier two-base error with a two-run home run and the Diamondbacks beat Oswalt for the first time, 8-4 on Sunday, extending the Astros' losing streak to eight games.
Houston has been outscored 66-16 during the skid.
"There's no question," Astros manager Phil Garner said. "We've had an absolutely awful, rotten, no-good, lousy week."
The Diamondbacks completed a four-game sweep by a combined score of 35-12.
"One hit leads to another," Quentin said. "Things are falling now."
Livan Hernandez (5-2) allowed 11 hits in his 43rd complete game and first since Sept. 9, 2005, for the Washington Nationals against San Francisco.
Oswalt, 6-0 in seven career starts against Arizona before Sunday, blanked the Diamondbacks for four innings and nursed a 1-0 lead into the fifth.
After an 0-2 count, Oswalt (6-4) walked Conor Jackson to start the inning. That brought up Quentin, whose error in right field led to Houston's run in the fourth. Quentin hit the first pitch 403 feet into the stands just beyond the left-center wall to give Arizona a 2-1 lead.
The Diamondbacks rookie said he was trying not to think too much about making up for his earlier error.
"You come up and you try not to do too much," he said. "You say 'Hey, let's slow down a little bit and just get a hit -- do something, get something going."'
Arizona broke it open and ended Oswalt's day with a four-run seventh. Oswalt faced three batters in the inning without recording an out before giving way to right-hander Rick White. The Diamondbacks scored on RBI singles by Alberto Callaspo, Eric Byrnes, Mark Reynolds and Jackson.
"I was pretty bad today," Oswalt said. "I just wasn't making quality pitches when I needed to. Right now the pitching staff on a whole is putting a lot of pressure on ourselves. ... Instead of just going out there to pitch, we're putting pressure on ourselves by trying to throw a shutout every time we go out there."
Houston took a 1-0 lead in the fourth. With one out, Lance Berkman singled and the ball got past Quentin in right field.
Berkman made it to third on the play, then scored on Carlos Lee's sacrifice fly, Lee's NL-leading 45th RBI.
Ensberg hit his fifth home run of the season in the ninth, third on the road trip.
Oswalt allowed six runs, five earned, and 10 hits in seven-plus innings.
Hernandez's second complete game of the series for the Diamondbacks. Rookie Micah Owings went the distance Thursday night.
"We've envisioned our starters picking up a lot of the load, taking some of the stress off the bullpen and being able to go deep," Arizona manager Bob Melvin said. "Now we're getting a little farther into the season where these guys are able to throw 125 pitches if they need to."
Garner, attempting to awaken the slumbering Astros' offense, took the unusual step of having team batting practice before a day game, to little effect.
Houston limps home from an 0-7 trip with their worst losing streak since dropping eight in a row six years ago nearly to the day -- from May 21-29, 2001.
"It will turn," Garner said. "It won't be this way all year."
- Quentin's home run was just the third given up by Oswalt against the Diamondbacks.
- Oswalt has given up 19 hits in his last two games.
- Arizona 2B Orlando Hudson got his first day off of the season.
- Every Arizona starting position player got a hit.
- Mike Muchlinski replaced Jerry Crawford on the umpiring crew. Crawford also missed Saturday night's game because of "health issues."
- The Diamondbacks finished their homestand 5-2.
- It was Arizona's second four-game sweep of the season.