Halladay (9-3) gave up six hits and struck out nine to earn his first win against the Cubs. The Phillies and San Francisco are the only teams he hasn't beaten.
Halladay, who leads the league with four complete games, threw 106 pitches and was ready to go back out in the eighth until Polanco connected to make it 7-0.
"I definitely understand," he said about exiting. "I want to go as far as I can but that makes sense. We have a long way to go and if you can save it, it pays off later."
In his first start since criticizing his team and second-guessing closer Carlos Marmol, Carlos Zambrano got rocked.
Zambrano (5-3) allowed seven runs and seven hits in 6 1-3 innings. He had a season-high seven walks.
"Too many walks," Zambrano said. "You can't do that against teams like this. Next time I will make an adjustment."
Trailing 7-0 in the eighth, the Cubs rallied with five runs off relievers Jose Contreras and J.C. Romero.
But Michael Stutes came in and shut them down, and Antonio Bastardo got the final out for his second save. Ryan Madson was unavailable a night after blowing his first save.
"The silver lining is seeing those young guys," Halladay said of Stutes and Bastardo. "They were put on the spot and did a great job."
Domonic Brown also hit a homer for the NL East-leading Phillies. His two-run shot gave Philadelphia a 3-0 lead in the second. Polanco, batting fifth for the first this season, increased the lead in the seventh.
"When I'm in the box, I don't think if I'm hitting second or fifth," Polanco said. "I just try to do my job."
Halladay didn't need much, but the bullpen almost blew it. The reigning NL Cy Young Award winner improved to 29-3 when the Phillies give him a lead. He didn't allow a walk for the fourth time in 14 starts.
Aramis Ramirez hit a two-run single off Contreras. Geovany Soto had an RBI single and pinch-hitter Lou Montanez hit a two-run single off Romero to cut it to 7-5.