Kennedy improved to 1-5 with a 4.97 ERA in his starts against NL West teams this year.
Huston Street worked a spotless ninth to earn his 26th save in 27 chances.
Barry Zito (4-11) lost his eighth straight decision. He has won only once in his last 20 starts.
Zito was pulled after four innings, allowing four earned runs on four hits and three walks. He fell to 0-9 with a 10.00 ERA in his last 11 starts away from AT&T Park.
MARLINS 4, CUBS 3
CHICAGO (AP) — Henderson Alvarez hit his first career home run and pitched six innings before exiting with a hamstring injury, and the Miami Marlins beat the Chicago Cubs.
Alvarez hit a three-run shot off Travis Wood in the second inning and also had a single and a sacrifice bunt.
Alvarez (3-3) allowed three runs and seven hits in six innings before he left with a tight right hamstring in his first career appearance against the Cubs.
Steve Cishek earned his 29th save in 31 chances for the Marlins, who have won two straight after losing six in a row.
Wood (8-11) allowed four runs and nine hits in seven innings.
BLUE JAYS 4, DIAMONDBACKS 1
PHOENIX (AP) — Esmil Rogers pitched 6 1-3 innings of one-hit ball and Edwin Encarnacion hit his 35th home run to lead the Toronto Blue Jays over Arizona.
Rogers (4-7) struck out five and walked one. Casey Janssen got his 27th save.
Diamondbacks starter Brandon McCarthy (3-9) pitched a five-hitter for his second complete game of the season.