Joe Kelly pitched six effective innings, Matt Holliday broke out of a slump with two doubles and the St. Louis Cardinals beat the Atlanta Braves 6-2 on Thursday night.
David Freese drove in two runs as St. Louis won for the fifth time in six games.
The Braves played without Jason Heyward, who is out with a broken right jaw after he was beaned during Wednesday's 4-1 win at the New York Mets.
The outfielder had surgery on Thursday in Atlanta.
Justin Upton hit his 24th homer, but the Braves lost for the second time in three games at the start of a six-game trip.
Atlanta had won eight of its last nine regular-season games against St. Louis.