With Brian Schneider starting behind the plate, Ruiz sat out the first six innings. He still set his career high for RBIs with his slam in the seventh and run-scoring double in the eighth.
Oswalt (2-0) gave up five hits and two runs, one earned, in six innings. The Braves were the only National League team Oswalt had not beaten.
Schneider gave the Phillies a 3-2 lead with his two-run homer off Brandon Beachy (0-1) in the fourth. The Phillies had 15 hits, including eight for extra bases.
Oswalt was 0-3 with a 6.21 ERA against Atlanta in nine games, including eight starts, with Houston and Philadelphia before yesterday.