"I thought there was a chance," Sanchez said. "His ball was really moving, particularly the slider, was moving all over the place."
Liriano took a no-hit bid into the seventh inning before faltering in his first no-decision this season, and pinch-hitter Justin Morneau singled in the go-ahead run in the eighth to lead the Pirates over the Chicago Cubs 3-2.
Pittsburgh remained tied with St. Louis for the NL Central lead, took three of four from the last-place Cubs and won for the sixth time in seven games. The Cardinals beat Seattle 12-2.
Morneau, acquired from Minnesota on Aug. 31, drove in his first run for the Pirates. The 2006 AL MVP is batting .279 (12 for 43) with Pittsburgh.
"It was perfect timing for the first RBI, that's for sure," Morneau said. "I wish it would have happened a week-and-a-half ago, but I'm glad it happened when it did. It's just nice to contribute."
With the score 2-2 in the eighth, Andrew McCutchen was hit by a pitch from Pedro Strop (2-2), took second on Marlon Byrd's bloop single to center and scored on Morneau's single.
"It's funny how things turn out in this game," Morneau said. "You hit some balls hard and have nothing to show for it then I get a broken-bat hit that ends being the game-winner."
Kyle Farnsworth (1-0) pitched a scoreless eighth, and Mark Melancon completed a three-hitter with a perfect ninth for his 16th save in 18 chances.
Liriano didn't allow a hit until Junior Lake singled into the hole between third base and shortstop leading off the seventh. Shortstop Jordy Mercer made a diving effort and stopped the ball on the outfield grass, but Lake easily beat the throw.
Welington Castillo followed with a tying, two-run homer into the bleachers in left-center. Castillo's seventh homer of the season stopped Liriano's streak of 22 consecutive scoreless innings at PNC Park.
"You knew it was going to be tough and that's how you score against Liriano -- you get somebody on and pop a home run," Chicago manager Dale Sveum said.
Liriano allowed two runs, three hits and four walks in six-plus innings. At 16-7, he became the first Pirates pitcher with a decision in his first 23 starts since Larry French opened with 24 in a row in 1930, according to STATS.
"He was on the edges of the plate and then he was just off of them," Pittsburgh manager Clint Hurdle said. "The pitch count got up higher than he wanted it to be but he got outs and he had a no-hitter through six innings. He battles and he competes."
Liriano, who was unavailable for comment after the game, threw 99 pitches through six innings, and Hurdle said it was doubtful he would have made it to the ninth.
"Francisco's a pro and he realizes it wouldn't benefit anyone for him to throw 130 pitches on Sept. 15," Hurdle said.
Cubs starter Travis Wood gave up two runs, five hits and two walks in six innings.
"Obviously, Liriano's very good so they matched each other evenly, pitch-for-pitch," Sveum said. "A couple bloopers there in the last inning cost us the win there."
Jose Tabata led off the first inning with a triple and scored on a wild pitch, and Sanchez doubled the lead when he homered in the fourth.
NOTES: Pittsburgh LF Starling Marte, who has not had a plate appearance since Aug. 18 because of a bruised right hand, is to take batting practice Monday and could be in the lineup Tuesday against San Diego. ... Cubs RHP Scott Baker is slated to make his final start of the season Friday against Atlanta. Manager Dale Sveum has decided not to tinker with his six-man rotation, even though Baker has allowed only one run, five hits and one walk in 11 innings in his first two starts since returning from elbow ligament surgery. ... The Pirates open a four-game home series Monday night against San Diego, while the Cubs open a four-game series at Milwaukee against the Brewers. Pirates RHP A.J. Burnett will start against RHP Andrew Cashner (9-8, 3.40). Chicago RHP Edwin Jackson (8-15, 4.76) faces RHP Wily Peralta (9-15, 4.49).