The Padres continued their late-season success by winning for the 10th time in 11 games. They are still nine games below the .500 mark.
Starter Clayton Richard (12-12) picked up the victory, giving up three runs on eight hits in 6 1/3.
Luke Gregerson grabbed his third save despite allowing a leadoff homer to Brown in the ninth. A throwing error by San Diego shortstop Everth Cabrera put the potential tying run on first with one away in the ninth, but Gregerson retired the next two batters on fly balls to end the game.
Alex White (2-7) was charged with the loss after he was touched for three runs on four hits in only 3 2/3 innings.