Pittsburgh lost its seventh straight game Friday and kept fading in the NL wild-card race as Starlin Castro hit a three-run homer that sent Chicago to a 7-4 win.
The Pirates have dropped 11 of 13 overall. They began the day three games behind St. Louis for the final NL playoff spot.
The Cubs have won four straight against the Pirates, including a three-game sweep last weekend in Pittsburgh.
Chris Rusin (1-2) notched his first major league victory, allowing two runs in five-plus innings in his fourth career start.
"It feels good," the 25-year-old Rusin said after a cold beer shower. "I located the ball, kept the ball down and got ahead of a lot of hitters."
"I wanted to jump on the first pitch because I knew he would throw me a fastball," Castro said. "I know the team isn't going anywhere, but we have to finish strong."
Since Castro's debut in 2010, he leads all National League players with 508 hits.
"We all know what kind of hitter he is right now," Cubs manager Dale Sveum said. "I was more impressed not by the home run, but by the adjustment he made. He went with no leg kick and no stride and hit a home run."
"Those are the things you look for, to see guys make adjustments. That's when you start to grow as a player."
Andrew McCutchen homered in the Pittsburgh seventh, but Cubs reliever Shawn Camp tossed a perfect eighth and Carlos Marmol earned his 20th save in 22 chances. Marmol has converted 19 consecutive save tries.
Pirates starter James McDonald (12-8) struggled once again in the second half. He lasted just 3 2/3 innings, allowing four runs on five hits and four walks. He is 2-5 in his last 10 starts.
McDonald, who also hit a batter, hurt himself with wildness. He walked three batters in the fourth before Anthony Rizzo delivered a two-run double down the right-field line and Alfonso Soriano hit an RBI single that made it 4-0.
"I didn't have any pitches today, but I've pitched in that situation where I didn't have any pitches before," McDonald said. "Walks are unacceptable. I had two outs, I should have gotten that out and been in the dugout."
The Pirates got an RBI single from Pedro Alvarez in the fifth and closed within a run in the sixth.
On Aug. 8, the Pirates were 63-47, but have gone 9-24 since. They are now just a game over .500 for the first time since June 15 when they were 32-31. Pittsburgh hasn't finished with a winning record since 1992.
While the Pirates continue to fight for a postseason berth, the Cubs have a magic number of their own. The victory was the Cubs' 57th, meaning six more wins lets them avoid a third 100-loss season.
"We got the magic number down," Sveum said. "These guys have a lot of pride and are trying to stay from that number."
Cubs second baseman Darwin Barney was 2 for 2 with a run scored to extend his hitting streak to a career-high nine games.
Cubs' first-round draft pick Albert Almora took batting practice with the team at Wrigley Field prior to the game. He will report to the instructional league on Monday. ... Alvarez (sore wrist) returned to the lineup after missing Wednesday's game. Walker (lower back tightness) did not start for the 16th consecutive game. ... Jason Berken makes his Cubs debut Saturday against Wandy Rodriguez (10-13, 3.72).