Oswalt (8-6) has recently suffered from a sore back and lasted only two innings while the Braves scored six runs on 10 hits. Of the six men Oswalt retired, five struck out.
Atlanta took a 6-1 lead through two innings and held on, thanks to a 16-hit attack.
Anderson had a sacrifice fly in the first and RBI singles in the second and fourth. Brian McCann added two RBI, one with a double in the second and another with a single in the fifth.
Derek Lowe (14-9) benefited from the early offense to get the win. He gave up five runs on nine hits and threw 102 pitches in 5 2/3 innings.
After Houston closed within two, Mike Gonzalez came on in the ninth to collect his 10th save.
Gonzalez put the tying runs on base with one away before getting Miguel Tejada to ground into a double play to end the game.