HOUSTON -- Bronson Arroyo is back on track and the Cincinnati Reds have won four in a row to reach .500.
"I have been under the weather for a while, so I really didn't know what I was going to have out there," said Arroyo, who has dealt with allergies and colds since spring training. "But that was probably the best stuff I have had all year. Especially the fastball. I had good command of my other pitches."
Arroyo (1-2) allowed six hits and two runs with seven strikeouts to bounce back from his previous start, when he allowed eight runs in three-plus innings.
Cincinnati has its longest winning streak of the season. Houston has lost three straight.
Votto's first-pitch shot to the Crawford Boxes in left field scored Drew Stubbs and pushed the lead to 3-1 in the seventh inning.
Roy Oswalt (2-3) gave up eight hits and three runs while striking out seven in seven innings in his first start since returning from Mississippi, where he helped his parents clean up after their home was destroyed in a tornado on Saturday.
"I felt pretty well," he said. "It's been a long week, but seven innings kept us in the ballgame."
Oswalt had won his previous eight decisions against Cincinnati. He is now 23-2 in his career against the Reds.
"Bronson gave us all he had," Reds manager Dusty Baker said. "Oswalt was Oswalt, but Bronson just got the better of him tonight. You figured we'd get him sooner or later. The odds were in our favor big time with the law of averages. I figured Bronson was going to win one, he was 0-2. That, and we never seem to beat Oswalt."
Astros manager Brad Mills was impressed with Oswalt's effort Thursday night and in each of his other four starts this year.
"He's done a great job, we just haven't been able to get him the runs we'd like to get him," Houston manager Brad Mills said. "He's pitched five quality starts and done a great job."
Houston put up two runs in the bottom of the seventh before Jay Bruce added a run for Cincinnati with his home run off Tim Byrdak in the eighth inning.
Francisco Cordero allowed one hit in a scoreless ninth for his eighth save.
Arroyo didn't allow a run until Hunter Pence's solo home run to left field in the seventh. Michael Bourn hit an RBI double that to get Houston within 3-2 and chased Arroyo.
"I made a really bad pitch to Pence," Arroyo said. "I had him 0-1 and I threw a soft breaking ball that was supposed to be off the plate, and I left it on. I felt like I was tiring a little bit there. Like I said, I have been under the weather a little bit."
Daniel Ray Herrera got Jeff Keppinger to ground out, ending the inning, and Mike Lincoln threw a scoreless eighth.
After Carlos Lee singled with two outs in the third inning, Arroyo retired the next seven batters. He didn't allow another hit until Kaz Matsui's single in the sixth inning.
Oswalt got his 1,500th career strikeout when he retired Arroyo to end the inning. He's the second player in franchise history to reach the mark, joining Nolan Ryan, who had 1,866 with the team. ... Houston LHP Wandy Rodriguez will miss his scheduled start on Friday at Atlanta because of back spasms. Brett Myers will replace him and the Astros are optimistic that Rodriguez can pitch on Saturday. ... Cincinnati CF Chris Dickerson sprained his right wrist in the second inning Thursday night and will have an MRI on Friday. "It had been bothering him, and he hadn't been playing much," Baker said. "Then we thought we got it fixed. But he took a swing tonight, and it came back. We'll know [Friday]. It's safe to say he won't be available for a few days."