Bronson Arroyo turned in a "quality" start, giving up just six hits and two runs in 6.2 innings. He also struck out seven while surrendering three free passes.
It was Arroyo's first win of the season against two defeats as he became the third consecutive Reds' starter to post a victory. That in itself is a rarity as it took the team 16 games to produce their first win for a starting pitcher.
Jay Bruce raised his average 22 points in the series and added his fourth homer of the season in the finale. He also scored three runs.
Joey Votto also belted his fourth home run with a two-run shot in the seventh inning.
Drew Stubbs, Brandon Phillips, Laynce Nix and Bruce all had a two-hit day as the Reds handed Oswalt just his second career loss to them against 23 wins.
Coco Cordero notched his eighth save in nine attempts. He is second in the league behind the Nationals' Matt Capps, who has 10.
It was a real pitchers' duel, going scoreless until the Reds' half of the fifth inning. Stubbs and Phillips both singled, as Stubbs went to third on Phillips' hit. Votto grounded into a double play, but Stubbs scored the first run.
The score remained 1-0 until the seventh inning when the Reds began to play add-on. Stubbs walked, stole second, and scored on Votto's opposite field home run increasing the lead to 3-0,
Hunter Pence led off the bottom of the seventh with a 400-foot HR to left, bringing the Astros within two at 3-1.
Tommy Manzella doubled to left and was driven in by a double off the bat of Michael Bourn, making it a 3-2 game.
In the top of the eighth, Jay Bruce hit a 400-footer over the right field fence, ending the scoring at 4-2.
Johnny Cueto (0-1) will square off against Brad Penny (3-0) in the opener against St. Louis.
The Cards are on a five-game winning streak of their own. The Pirates have won three straight to pull out of the cellar, making way for the return of the Astros. The Brewers and Cubs are both on three game skids.