Dirks' winning hit came off Arodys Vizcaino after singles by Brennan Boesch and Scott Sizemore.
Jordan Schafer led off the game with a triple and scored the Braves' run.
Brandon Beachy, bidding for a spot in Atlanta's rotation, gave up one hit and three walks in five shutout innings, striking out three.
Rick Porcello pitched 4 2-3 innings for the Tigers, giving up three hits including Alex Gonzalez's RBI single.
Daniel Schlereth worked two perfect innings of relief for Detroit.