Madison Bumgarner pitched six sharp innings as the NL West-leading Giants won their fifth in a row.
The Braves' skid is their longest skid since an eight-game slide in May 2012. Atlanta, which began the series leading the NL East, was held to one run in each of the losses to San Francisco.
Bumgarner (3-3) allowed one unearned run and three hits, striking out nine. He earned his first win since April 11.
Santiago Casilla pitched the ninth for his first save. Closer Sergio Romo was rested after recording saves in two straight games.
Crawford gave the Giants a 2-1 lead with his homer off Alex Wood (2-5) in the fourth. Crawford hit a two-run shot off Jordan Walden in the eighth.