Joe Kelly (7-3) allowed one run and four hits in six solid innings to win his fourth straight start. Kelly struck out five and walked two to remain unbeaten since June 5.
Justin Morneau went 1 for 3 in his debut with the Pirates a day after Pittsburgh acquired the first baseman from Minnesota to bolster the franchise's bid for its first playoff appearance in 21 years.
The push for an NL Central title could go down to the wire. The Pirates reclaimed first place with a 7-1 victory Saturday night but St. Louis responded by knocking around Johnson, who never got comfortable in his first major league start.
The Pirates sent the 28-year-old left-hander to the mound so struggling All-Star Jeff Locke could take a much-needed breather. Locke is 1-2 with a 6.88 ERA in the second half, and manager Clint Hurdle thought a few days off would allow Locke to work on his mechanics and get some rest.
Locke won't pitch again until next weekend at the earliest. If Pittsburgh decides he needs even more time off, it will likely have to look elsewhere for help after the Cardinals broke out of a three-game funk.
The National League's best offense scored all of one run combined during its brief skid but bounced back by waiting out Johnson and then pouncing when he made a mistake.
Carpenter doubled to open the game and Robinson followed with a walk. Craig and Molina provided consecutive RBI singles and Jon Jay added a sacrifice fly to stake Kelly to a 3-0 lead before he threw his first pitch.
The advantage grew in the third when Freese doubled to score Craig and Molina and end Johnson's day. Two weeks after limiting Arizona to one run in six innings of relief in his first major league appearance, Johnson gave up five runs on seven hits in two-plus innings.
Kelly has been a pleasant surprise since being elevated to the rotation full-time in July. He never let the Pirates in the game, allowing only an RBI single by Marlon Byrd in the sixth.
By then the Cardinals had things well in hand as baseball's tightest division race once again drew even.
The Pirates, whose 79 wins are tied for the franchise's high-water mark since 1992, made two bold moves last week in hopes of drawing ahead. They brought in Byrd and catcher John Buck from the New York Mets on Tuesday, then made an even bigger splash Saturday when they convinced Morneau to leave Minnesota after 11 seasons.
Morneau arrived at PNC Park midway through Saturday night's blowout and watched the remainder of the game from the dugout. He got a better view on Sunday, playing first base and batting sixth.
The 2006 AL MVP grounded out in his first plate appearance, walked in his second and then lined a single to right field his third time up. He ended his first game for Pittsburgh with a deep fly to the warning track in the ninth.
NOTES: Pittsburgh LHP Wandy Rodriguez is dealing with arthritis in his pitching arm. Rodriguez, who has been on the disabled list since July with forearm tightness, is expected to resume his throwing program this week after a visit with Dr. James Andrews revealed no structural damage to the arm. Pirates general manager Neal Huntington said the team remains hopeful Rodriguez can return in some capacity down the stretch. ... The Cardinals activated C Tony Cruz from the 15-day disabled list even though Cruz hasn't been cleared to swing a bat as he recovers from a broken forearm. Cruz would be used only in an emergency. ... The Pirates begin a three-game series in Milwaukee on Monday. Charlie Morton (6-3, 2.14 ERA) faces Tyler Thornburg (1-0, 1.94). ... St. Louis travels to Cincinnati on Monday to begin a four-game set with the Reds. Adam Wainwright (15-8, 2.96) starts for the Cardinals against Mat Latos (13-5, 3.03). ... The Cardinals sent reliever Michael Blazek to Milwaukee to complete the trade they made to acquire RHP John Axford.
Link to box score: St. Louis 7 at Pittsburgh 2
Link to game discussion at The Cardinal Nation message board