Contreras’ two-run double high off the right-field wall in the seventh inning rallied the Cubs from a 2-1 deficit. He also accounted for the game’s first run with a long sacrifice fly to center field in the fifth.
Contreras, Rafael Ortega, and Frank Schwindel — the top three hitters in the batting order — each had two hits for the Cubs. It was Schwindel’s 24th multihit game in 52 games since being claimed off waivers from Oakland in July.
“There are a lot of things to smile about today,” Cubs manager David Ross said. “Considering we’re on the back end of season and where we’ve been, it was a good effort and a good win.”
Bryan Reynolds became the first Pirates player to hit two triples in a game since Josh Harrison in 2014. Reynolds’ second triple came in the sixth and drove in a run, and he scored on Kevin Newman’s sacrifice fly to make it 2-1.
Reynolds also made two outstanding catches in center field while raising his batting average to .298.
Pinch-hitter Trayce Thompson doubled with one out in the Cubs seventh and Schwindel walked with two outs. Nick Mears relieved Chasen Shreve (3-3) and gave up Contreras’ double.
Adam Morgan (2-1) pitched one scoreless inning of relief for the win. Codi Heuer notched his second save with a perfect ninth inning.
The defeat put the Pirates (59-99) on the brink of the ninth 100-loss season in franchise history.
Roansy Contreras started for the Pirates and pitched three scoreless innings in his major league debut after being called up from Triple-A Indianapolis. The 21-year-old allowed three hits, walked one, and struck out four.
“It would have been easy for him to come out and try to do too much, so what I was most impressed with is I don’t think he overthrew one pitch,” Pirates manager Derek Shelton said. “It was a very impressive major league debut.”
Cubs starter Kyle Hendricks failed in his seventh attempt at his 15th win of the season. He gave up two runs on five hits in five innings with five strikeouts and one walk.
“I feel a lot better about things,” Hendricks said. “I kind of built off the last one in that I was able to get the fastball down in the zone and get a lot of balls on the ground. It feels good to go into the offseason building off some of the things I wanted to build off.”
Reynolds was selected as the Roberto Clemente Award winner, emblematic of the Pirates’ most valuable player, in voting by the Pittsburgh chapter of the Baseball Writers Association of America.
Rookie reliever David Bednar won the Steve Blass Award as the team’s best pitcher. The Chuck Tanner Good Guy Award went to catcher Jacob Stallings for his cooperation with the media.
Cubs: 3B Patrick Wisdom’s season is over after he was placed on the injured list with no injury designation, which likely means a potential COVID-19 situation. He set a franchise rookie record with 28 home runs. INF Trent Giambrone was selected from Triple-A Iowa and had a pinch-hit single in the eighth inning in his first big league at-bat. … SS Nico Hoerner (general soreness) missed a fourth straight game.
Pirates: 3B Ke’Bryan Hayes (left wrist soreness) was placed on the 10-day IL, ending his season. Hayes was also sidelined for a month early in the season because of a jammed left wrist.
LHP Justin Steele (3-4, 4.86) will start for the Cubs on Thursday night in the finale of the three-game series while the Pirates are likely to have a bullpen game. Steele gave up a career-high six runs to St. Louis in his last start.