Patrick Corbin (4-4) settled down after a tough start to get the victory. The left-hander went six innings plus one batter, allowing three runs and scattering eight hits.
Chicago rookie Dylan Covey (0-4), still looking for his first big-league win after eight starts, left the game with one out in the third inning with left oblique soreness.
Jose Abreu cut the lead to 5-4 with a leadoff home run of Jorge De La Rosa to start the eighth. It was his 100th career homer and all nine of them this season have come on the road.
But J.J. Hoover came on with one out and the bases loaded to strikeout Kevan Smith and Yolmer Sanchez to preserve the lead.
Fernando Rodney pitched a perfect ninth for his 11th save in 13 tries.
Melky Cabrera and Todd Frazier also homered for Chicago.