Holliday had three hits and four RBIs for the Cardinals, who began the day one game behind first-place Milwaukee in the NL Central.
St. Louis second baseman Kolten Wong homered but left in the top of the eighth after falling backward when he tried to catch a popup in short right field. He appeared to hurt his head and shoulder, and was replaced by Pete Kozma.
Kozma, in his third stint with St. Louis this season, led off the bottom half with a double. It was his second hit in four at-bats this year.
After failing to get down two bunt attempts, Daniel Descalso got the third one down and beat Carlos Villanueva's throw to first for a single. With the bases loaded and two outs, Holliday singled off the foot of Villanueva (5-7) to drive in two runs.
Jhonny Peralta's third single scored the final run in the three-run eighth.
John Lackey pitched 6 1-3 innings in his sixth start for St. Louis since coming over from Boston on July 31. The right-hander allowed five runs, two earned, and nine hits.
Lackey issued a leadoff walk in the second and made a throwing error that allowed a run to score. Chris Coghlan hit a two-run single and Luis Valbuena, who had three hits, added a two-run homer to make it 5-0.
Holliday hit his 16th homer in the fourth, and St. Louis scored three in the fifth.
Wong hit a leadoff homer, and Matt Carpenter's RBI double glanced off the glove of center fielder Arismendy Alcantara at the warning track. Holliday's run-scoring double off the left-field fence chased starter Travis Wood.
Holliday is 13 for 37 (.351) against Wood with four home runs.
Alcantara gave Chicago a 6-4 edge with a solo homer off reliever Randy Choate.
Cubs: 1B Anthony Rizzo (tightness in lower back) was out of the lineup again. Rizzo, second in the NL with 30 homers, has not played since Tuesday in Cincinnati, where his back tightened up during a 50-minute rain delay. He is expected back Monday.
Cubs: Jacob Turner (4-8, 5.84 ERA) will make his second start at home Monday against Milwaukee. The St. Louis native is 0-1 with a 4.50 ERA in three appearances with Chicago since he was acquired from Miami.
Cardinals: Lance Lynn (14-8, 2.79) starts at home Monday afternoon against Pittsburgh. Lynn's start will be his team-leading 28th of the season and his fourth against the Pirates. With a victory, Lynn would join Detroit ace Max Scherzer as the only pitchers with 15 wins in each of the last three seasons.
Link to box score: St. Louis (72-63) 9, Chicago (61-75) 6
Join the pre-game, in-game and post-game discussion about each contest at The Cardinal Nation message board.