Freeman held off Dodgers rookie Yasiel Puig to win the fan voting for the final spot on NL All-Star roster. The first baseman drove in two runs with a first-inning double and added run-scoring singles in the second and fourth innings.
Justin Upton also had three hits to help Tim Hudson (6-7) earn his second straight win. Craig Kimbrel pitched the ninth for his 25th save.
Latos (8-3) lasted only four innings in his shortest start of the season. He allowed six runs on nine hits and two walks. The six earned runs allowed matched his season high.
Braves right fielder Jason Heyward left the game in the second inning with a strained right hamstring.
PHILLIES 3, NATIONALS 1
PHILADELPHIA (AP) — Kyle Kendrick outpitched All-Star Jordan Zimmermann, pinch-hitter Kevin Frandsen hit a tiebreaking double in the seventh and Philadelphia beat Washington.
Frandsen is hitting .355 (11 for 31) with 10 RBIs as a pinch-hitter this season.
Kendrick (8-6) allowed one run and five hits in seven innings to help Philadelphia take three of four from the defending NL East champions.
The Phillies (46-47) are 7-3 since July 2 and are within 1 1/2 games of the second-place Nationals.
Zimmermann (12-4) gave up two runs and eight hits, striking out six in 6 1-3 innings.
Antonio Bastardo pitched a perfect eighth and Jonathan Papelbon finished for his 20th save in 24 tries.
Kendrick overcame a season-high four errors by the Phillies. Chase Utley had a career-worst three errors.
CUBS 3, CARDINALS 0
CHICAGO (AP) — Edwin Jackson earned his third straight win, combining with four relievers on a four-hitter, and Anthony Rizzo drove in all the runs to lead the Chicago Cubs over St. Louis.
St. Louis had the tying run at the plate in the ninth inning after Kevin Gregg dropped a throw covering first on Allen Craig's grounder, and David Freese walked.
Alfonso Soriano made a shoestring catch on Jon Jay's liner to end the game. Cardinals manager Mike Matheny was then seen arguing vehemently with plate umpire Dan Bellino and appeared to make contact with him.
The Cubs escaped with the win, and Gregg got his 16th save in 18 chances.
St. Louis' five-game winning streak ended.
Jackson (6-10) struck out five without a walk in seven innings. Starlin Castro added three singles and scored two runs for the Cubs, who won for the fifth time in six games.
DIAMONDBACKS 5, BREWERS 3
PHOENIX (AP) — Martin Prado lined a two-run single in the eighth inning, Wade Miley pitched eight effective innings, and Arizona topped Milwaukee to snap a three-game losing streak.
Miley (6-7) gave up a pair of homers in the first three innings before settling down.
Adam Eaton helped Arizona close to 3-2 with a two-run triple in the fifth inning, Jason Kubel tied it with a sacrifice fly the next inning and Prado capped the comeback with the bases loaded against Jim Henderson (3-3) in the eighth.
Brad Ziegler worked around two runners in the ninth to earn his second save, a night after Heath Bell blew a save with two outs in the ninth in a loss to the Dodgers.
Jonathan Lucroy hit a two-run homer, and Carlos Gomez had a solo shot for the Brewers.
Milwaukee starter Yovani Gallardo allowed three runs and four hits in six innings.
GIANTS 4, PADRES 2
SAN DIEGO (AP) — Pablo Sandoval hit his first home run since May 21, and All-Star Madison Bumgarner settled down to allow four hits in seven innings as San Francisco beat San Diego in a matchup of the worst teams in the weak NL West.
The defending World Series champion Giants, who snapped a four-game losing streak, had lost 19 of 24 coming in and were a season-high 10 games under .500.
Bumgarner (10-5) allowed two runs on three hits in the first inning and then retired 14 in a row before Carlos Quentin singled with two outs in the sixth. The lefty struck out six and walked one.
The Giants are 2-8 in July, with Bumgarner getting both wins. Sergio Romo pitched the ninth for his 21st save in 24 chances.
The Padres have lost 16 of 19.
San Francisco broke through in the eighth with two runs and three hits off Luke Gregerson (4-5).
San Diego starter Jason Marquis failed for the fifth time to get his 10th victory. He allowed two runs and seven hits in 5 1-3 innings, struck out three and walked two.
DODGERS 6, ROCKIES 1
LOS ANGELES (AP) — Chris Capuano pitched shutout ball for 6 1/3 innings, Mark Ellis drove in four runs, and the Los Angeles Dodgers beat Colorado for their fifth win in a row.
The Dodgers moved above .500 for the first time since April 15.
Capuano (3-6) allowed six hits, struck out a season-high eight and walked none to earn just his second win at home and first since beating Miami 5-3 on May 12.
Drew Pomeranz (0-3) gave up three runs and seven hits in four innings, struck out four and walked five in his third start of the season.
Ellis went 3 for 4 with a walk, the fourth time he has had three or more hits in a game this season.