Cubs starter Carlos Villanueva allowed a run in five innings in his first start and third outing of the season.
A.J. Burnett, who signed a one-year, $16 million contract with the Phillies after he spent the last two seasons with the Pittsburgh Pirates, allowed eight runs, four earned, in 5 2-3 innings. He struck out three but walked six.
The Cubs scored four runs in the first and sixth innings.
Kalish opened up the scoring with an RBI triple in the first. It was his first hit since Sept. 11, 2012, when he played for the Boston Red Sox.
The Cubs extended their lead to 4-0 on sacrifice flies by Nate Schierholtz and Ryan Sweeney and Starlin Castro's RBI double.
The Cubs scored eight runs and were 4 for 40 with runners in scoring position in their previous five games.
The Phillies scored a run on Chase Utley's groundout in the fifth to cut the lead to 4-1. Manager Ryne Sandberg challenged the call that Utley was out at first, but the review confirmed it. Ryan Howard lined into an inning-ending double play.
The Phillies went 1 for 15 with runners in scoring position. They scored two runs off reliever Jose Veras in the ninth.
The Cubs added four runs in the sixth. With runners on first and third, shortstop Jimmy Rollins fielded a grounder deflected by Burnett, but Rollins didn't touch second base or throw to first as a run scored. Kalish then hit a two-run double and Anthony Rizzo added an RBI single.
Villanueva made his first start after he pitched in relief in two extra-inning games against the Pirates. He allowed game-winning hits in both games.
NOTES: Castro moved to sixth in the Cubs lineup after hitting second or third in previous games. Castro was 9-for-22 in his career against Burnett entering Sunday. "Maybe we'll have a lot of guys on base and see if he can go ahead and put himself in a position to drive in some runs," Cubs manager Rick Renteria said. ...The Phillies announced their home opener against the Milwaukee Brewers on Monday is postponed and rescheduled for Tuesday due to impending inclement weather. Phillies RHP Kyle Kendrick (0-0, 1.29 ERA) will start against RHP Kyle Lohse (0-1, 3.86). ...After an off day Monday, the Cubs begin a three-game home series against the Pirates on Tuesday. RHP Edwin Jackson (0-0, 1.69) will start against RHP Charlie Morton (0-0, 0.00). ...Phillies LHP Cole Hamels, on the disabled list for biceps tendinitis, made his first rehab start Sunday for Class A Clearwater. He allowed two runs and three hits in four innings. He struck out four without a walk, but gave up two home runs.