Garza allowed a season-high 10 hits in 6 2-3 innings, but held the NL's highest scoring offense to two runs while improving to 5-0 with a 1.24 ERA in his last six starts. With a handful of scouts from several contenders watching his every move, the right-hander struck out four and walked two.
Garza's hot stretch has made him one of the top names on the market ahead of the July 31 non-waiver trade deadline. But he also is eligible for free agency after the season, adding a tricky element to the negotiations between any interested team and a Cubs franchise looking for more top-level prospects for its rebuilding project.
Jon Jay had four hits and Matt Adams went 2 for 4 for St. Louis, which had won six of seven, including a 3-2 victory in the second game of the four-game series on Friday night. Lance Lynn was knocked out in the fifth inning in his second-shortest outing of the season.
The Cardinals played without outfielder Matt Holliday, who left Thursday's night's 3-0 loss to Chicago due to tightness in his right hamstring. All-Star catcher Yadier Molina was out of the starting lineup on his 31st birthday, but he hit for Rob Johnson in the eighth and stayed in the game.
Molina reached on an error by right fielder Julio Borbon, loading the bases with one out. Matt Carpenter hit a sacrifice fly, trimming the Cubs' lead to 6-3, but James Russell got Daniel Descalso to fly out to end the inning.
Tony Cruz started for St. Louis at catcher and singled in Adams in the second. But he also was called for interference during Chicago's three-run rally in the bottom half, setting up Starlin Castro's dribbler up the third base line for an RBI single.
Soriano drove Lynn's first pitch of the third over the wall in center field for his 16th homer, extending the lead to 4-1. The slugger went 2 for 5 and is batting .350 (21 for 60) with nine homers and 19 RBIs in his last 15 games, increasing the likelihood that he could be dealt in the next couple weeks.
Garza (6-1) escaped a jam in the fourth and was in control until the Cardinals chased him with three hits in the seventh, including Allen Craig's run-scoring single.
Garza received a standing ovation from the crowd of 42,240 as he trudged off the mound following Craig's hit, but the pitcher slammed his glove on his right leg as he made his way to the dugout, upset with the hit by his last batter.
Matt Guerrier came in with two runners on and got Adams to fly out to end the inning.
Lynn (11-4) was charged with six runs, five earned, and a season-high 10 hits in 4 1-3 innings. The right-hander dropped to 5-2 with a 3.30 ERA in eight career appearances against the Cubs.
NOTES: The Cubs claimed OF Cole Gillespie off waivers from the San Francisco Giants. Gillespie was hitless in nine at-bats over three games with the Giants before he was designated for assignment on Tuesday. He will join the Cubs before the finale of the four-game series on Sunday night. ... Lynn lasted just four-plus innings in his first start of the season on April 3 at Arizona. ... Cubs OF Nate Schierholtz rested, and manager Dale Sveum said he probably will be off again on Sunday. Sveum said Schierholtz is a little banged up. ''A little bit of everything, nothing major,'' Sveum said. ... Cubs RHP Scott Baker will throw approximately 65 pitches in his first rehab start with Class A Kane County on Sunday, according to Sveum. Baker missed last season with Minnesota after having elbow-ligament replacement surgery. ... The attendance set a season high this season for Wrigley Field. ... All-Stars Adam Wainwright (12-5, 2.30 ERA) of the Cardinals and Travis Wood (6-6, 2.69 ERA) of the Cubs face off on Sunday night in the final game before the break.
Link to box score: Chicago 6, St. Louis 4
Link to game discussion at The Cardinal Nation message board
FOX's Joe Buck and Tim McCarver recap the game.