Hendricks (3-4) struck out seven and walked none. He was in line for his second career shutout before giving up a run in the ninth.
Fowler sparked a two-run first against Jerad Eickhoff (2-7) with his sixth home run.
The Phillies lost for the sixth time in eight games.
Philadelphia had just four hits before right fielder Heyward and second baseman Zobrist allowed Freddy Galvis' fly to drop between them for a leadoff double in the ninth.
Galvis scored from third when Ryan Howard struck out swinging on a pitch in the dirt. The Cubs had a shift on with the lefty at the plate, allowing the runner to take a huge lead.
Catcher Miguel Montero looked him back, but Galvis took off for home as he threw to first on the strikeout, spoiling the shutout and drawing boos from the crowd. Hendricks then retired Cameron Rupp on a groundout.
Dominant in a rare win over struggling Atlanta in his previous start, Eickhoff came up short against the team with the best record in the majors. The right-hander went six innings, allowing four runs and eight hits while striking out seven and walking one.
The Cubs, tops in the majors in run differential, wasted no time grabbing the lead.
Fowler drove a 3-1 fastball just over the wall in left-center for his second leadoff homer this season and the 16th of his career. Heyward followed with a double and scored on a two-out double by Zobrist, who came in on a 22-for-50 tear.
The Cubs made it 3-0 in the third on back-to-back singles by Addison Russell and Hendricks and a double by Heyward. Hendricks got thrown out trying to score to end the inning, but the way he was pitching, it didn't matter.
Phillies: Galvis came up limping in the sixth inning after Hendricks hit him in the right leg with a pitch. He walked gingerly to first and stayed in the game after being tended to by a trainer.
RHP John Lackey (4-2, 3.38 ERA) goes for his first win in more than three weeks for Chicago while RHP Vince Velasquez (5-1, 2.75 ERA) tries to shake off his shortest outing of the season for Philadelphia. Lackey is 0-1 in his past three outings, although he has lowered his ERA from 4.02 to 3.38. Velasquez lasted four innings against Detroit on Monday, allowing three runs and nine hits.