Zimmermann hurled his second complete game of the season, striking out four and walking one, for his third win.
Jayson Werth drove in Bryce Harper in the third for the only run of the game.
Anibal Sanchez racked up a franchise-high 17 strikeouts as the Detroit Tigers opened up interleague play for 2013 with a 10-0 win over the Atlanta Braves.
It was the most strikeouts ever by a Tigers pitcher in a nine-inning game. He scattered five hits and walked one in eight scoreless frames.
Matt Tuiasosopo led the Tigers offence, homering and driving in five.
David Ross smashed two huge home runs in the first four-hit game of his career as the Boston Red Sox beat the Houston Astros 7-3.
Will Middlebrooks and David Ortiz also went yard, while Ryan Dempster fanned a career-high 10 for his first win with the Red Sox.
There was also a career high of nine strikeouts for David Phelps as the New York Yankees beat the Toronto Blue Jays 6-4.
Phelps got the win, hurling four innings in relief of Ivan Nova after the starter exited in the third with an elbow injury on expensive night for the Yankees who also lost catcher Francisco Cervelli to a fractured hand.
Carlos Beltran homered twice and drove in three, while Lance Lynn struck out nine in seven innings of one-run ball as the St Louis Cardinals beat the Pittsburgh Pirates 9-1.
Pirates starter Jonathan Sanchez surrendered home runs to the first two batters he faced and was ejected from the game without having registered an out when he Allen Craig with a pitch.
Kyle Kendrick hurled a three-hit shutout and Ryan Howard went yard in the Philadelphia Phillies' 4-0 win over the New York Mets.
Wei-Yin Chen allowed two hits in eight scoreless innings as the Baltimore Orioles overcame the Oakland Athletics 3-0.
Rookie Justin Grimm pitched seven shutout innings to lift the Texas Rangers to a 4-3 win over the Minnesota Twins.
Anthony Rizzo homered twice in the Chicago Cubs' 4-2 victory over the Miami Marlins while the Colorado Rockies were 6-3 winners over the Arizona Diamondbacks.
The Chicago White Sox beat the Tampa Bay Rays 5-4, the San Diego Padres edged out the San Francisco Giants 2-1, the Los Angeles Dodgers were 7-5 winners over the Milwaukee Brewers and the Los Angeles Angels overcame the Seattle Mariners 6-3.
The game between Cleveland and Kansas City was postponed.