Maholm (2-2) allowed a run on five hits with a strikeout and no walks, dropping his ERA from 8.36 to 6.20. And the speedy Campana had two hits on balls that didn't leave the infield and scored twice for the Cubs.
"He had really good command of his fastball, but the biggest thing was when he needed the curveball he really had it," Cubs manager Dale Sveum said of Maholm. "He did a great job."
A left-hander who doesn't overpower hitters, Maholm worked out of a first-and-third, no-out jam in the first inning and cruised from there.
"Obviously I didn't want to go out there and let the first two runners get on base," he said. "But you just have to make your pitches and do what you can and have a chance to get some things going. I think I had one punchout so that's a lot of ground balls and the defense played great."
Maholm got a boost from Campana, who pestered Halladay and the Phillies with his quickness.
"(Halladay) throws a lot of strikes and I was able to poke some balls around today," Campana said. "I don't think I hit a ball out of the infield grass and I had two hits. Anyway I can get on base, I'll take it."
Ty Wigginton homered for Philadelphia, which has scored two runs or less in 11 of 20 games this season.
"We didn't do nothing to him," Phillies manager Charlie Manuel said of Maholm. "That's how we've been on left-handers this year."
Halladay (3-2) was unhittable at the start, retiring 10 straight batters with four strikeouts, but surrendered three runs on six hits in a three-inning stretch to fall to 1-5 lifetime against Chicago. He allowed three runs on six hits with five strikeouts and two walks.
"We made good pitches the whole night," Halladay said. "They were scrappy. They obviously have some speed and were able to capitalize on it."
Rafael Dolis pitched two scoreless innings for his first major-league save.
Chicago took a 1-0 lead in the fourth. Campana led off and got the Cubs' first hit on a bunt, sliding safely into first and just beating the tag of Wigginton. After stealing second, Campana scored on Castro's bloop single to center.
"That's obviously a specialty," Halladay said of Campana's speed. "You just hope he hits the ball in the air somewhere and they catch it."
The Cubs scored two more runs in the sixth on RBIs by Alfonso Soriano and Ian Stewart. Chicago went ahead 2-0 on Soriano's single to left that scored Campana, who led off with his second straight infield single. Stewart doubled to right to drive home Bryan LaHair, who had singled, for a 3-0 cushion.
The inning ended with a blunder by Soriano, who was caught flat-footed in between third and home on Darwin Barney's groundout that resulted in a rare 1-3-2 double play.
But the three-run lead was more than enough for Maholm.
"I just went in knowing that I had to throw well because obviously (Halladay's) not going to give up a ton," Maholm said.
The Phillies' offense, still missing injured All-Stars Chase Utley (knee) and Ryan Howard (Achilles'), didn't resemble the unit that tallied 20 runs while winning two of three at the Diamondbacks in their last series.
"Obviously it was a tougher night tonight at the plate but we need to look at the positives at things we did in Arizona and try and continue to do that and do it as consistently as we can," Halladay said. "I'm a terrible hitter so I can't tell you what guys felt in Arizona and what they felt other times but it's just a matter of trying to build on the positives. We need to start doing it as soon as possible."
Halladay said that, regardless of the offensive output, he wouldn't be affected.
"You worry about what you can control," he said. "As a pitcher, really that's just trying to make pitches. Outside of that there's not a whole lot you have a hand in, whether it's offensively or defensively or where balls are hit. That's part of the game and you understand that.
After Carlos Ruiz's second-inning double, Maholm retired 15 of the next 16 batters before Wigginton's homer to left with one out in the seventh. That hit ended the night for Maholm.
Philadelphia threatened to score more in the seventh off left-handed reliever James Russell after putting runners on first and second with a pair of infield hits, but Soriano caught Juan Pierre's drive to left after initially misplaying the ball for the final out.
Howard was examined by a doctor on Friday and said after the game that he hopes to begin baseball activities Sunday in Clearwater, Fla. He said there was no timetable on a possible return to the Phillies lineup.
SS Jimmy Rollins went 0 for 4 for Philadelphia and has three hits in his last 37 at-bats. ... Wigginton extended his hitting streak to 12 games with a fourth-inning single. ... Despite many empty seats on a chilly, windy night, the Phillies announced their 211th straight regular-season sellout with a crowd of 45,261. ... Campana has five steals in his last four games. ... Philadelphia RHP Joe Blanton (1-3, 4.34) is scheduled to face Cubs RHP Randy Wells (0-0, 3.60) Saturday night in the second game of the four-game series.