Strasburg (4-2) allowed two base runners in each of the first three innings, walking three and throwing the first wild pitch of his career. But he finished with seven strikeouts in six innings and lowered his ERA to 2.03. Two relievers completed the four-hitter.
The shutout was the third this year for the Nationals, thanks in part to Strasburg’s first scoreless outing.
Making his eighth major league start and facing Florida for the first time, Strasburg was locked in a scoreless duel with Ricky Nolasco (9-7) until Josh Willingham hit a three-run double in the sixth.
Strasburg retired 10 of the final 11 batters he faced before departing after throwing 99 pitches.
Giants 1, Mets 0 — Barry Zito (8-4) struck out 10 in eight innings of two-hit ball as host San Francisco shut out the slumping Mets for the second consecutive game.
All-Star closer Brian Wilson completed the three-hitter for the Giants, who have won four straight and nine of 11. David Wright singled with two outs in the ninth before Wilson struck out Carlos Beltran to end it.
Cubs 4, Phillies 3 — Aramis Ramirez homered with two outs in the eighth for his third hit of the game and host Chicago rallied to defeat Philadelphia.
Ramirez appears to be coming out of a season-long slump. His 11th homer came off Ryan Madson (2-1), and gave him 14 RBIs in his last eight games.
Astros 5, Pirates 2 — Jeff Keppinger homered and had three RBIs, Brett Myers allowed two runs while working into the eighth, and visiting Houston remained unbeaten in seven games against Pittsburgh.
Myers (7-6) extended his club record for consecutive starts of at least six innings to begin a season to 19, allowing two runs on five hits in 7 2/3 innings, striking out four, and walking one.
Twins 7, White Sox 4 — Francisco Liriano (7-7) went 7 2/3 innings as host Minnesota beat Chicago, which was victimized by faulty fielding in snapping its nine-game winning streak.
The White Sox made four errors, and Gavin Floyd (5-8) gave up four runs during a sloppy fourth inning. Angels 3, Mariners 2 — Jered Weaver (9-5) outpitched Felix Hernandez for the third time this season, shutting down visiting Seattle’s weak offense over seven innings.
Hernandez (7-6) allowed 10 hits over eight innings while striking out only three.
Blue Jays 4, Orioles 2 — Ricky Romero allowed five hits in seven innings, Aaron Hill homered, and visiting Toronto ended Baltimore’s four-game winning streak.
Fred Lewis had two hits and scored twice for the Blue Jays, who improved to 7-0 against the Orioles. Romero (7-6) gave up two unearned runs, walked one, and struck out five.
Athletics 5, Royals 1 — Gio Gonzalez (8-6) outdueled Zack Greinke as Oakland beat host Kansas City. Greinke (5-9), who missed his previous start with stiffness in his right shoulder, was charged with five runs (two earned) in six innings.
Reds 3, Rockies 2 — Brandon Phillips followed his first All-Star appearance with a three-hit game and Arthur Rhodes pitched out of a bases-loaded, none-out threat in the eighth, preserving host Cincinnati’s win over Colorado.
Cardinals 8, Dodgers 4 — Yadier Molina homered and drove in four runs, matching his RBI total from the previous 25 games, to carry host St. Louis.
Brewers 9, Braves 3 — Ryan Braun’s two-run homer helped give Milwaukee an early lead, and Randy Wolf (7-8) earned his first win over host Atlanta in seven years.
Padres 12, Diamondbacks 1 — Adrian Gonzalez hit a go-ahead two-run homer during a five-run fourth as San Diego rolled at home.
Indians 8, Tigers 2 — Andy Marte and Austin Kearns hit two-run homers to help host Cleveland beat Detroit.