A career .116 hitter, Westbrook had never had more than one hit in a game. The right-hander, who scored twice and had an RBI, surpassed his hit output for the year with two singles and a double in his three at-bats. That raised his batting from .100 to .217.
On the mound, Westbrook (6-4) scattered eight hits while striking out one and walking four.
St. Louis reached a season-best 22 games over .500 (58-36) and owns the best winning percentage in the majors (.617).
The Padres' lone All-Star representative, Everth Cabrera, drove in two runs with a two-run single off Westbrook in the seventh. San Diego, which lost 18 of 22 to conclude the first half, fell to 15-32 on the road and 74-149 in St. Louis (6-19 at new Busch Stadium).
Former Cardinal Jason Marquis (9-5) lost his third straight. Marquis, who has not won since beating Arizona 6-4 on June 15, was touched for six runs on eight hits and three walks.
Marquis blanked the Cardinals the first two innings before Westbrook led off the third with a single to center. He later scored on Beltran's sacrifice fly to center.
Two innings later, Westbrook started another rally when he doubled over right fielder Will Venable's head to begin the fifth. Carpenter followed with an RBI double to the gap in left center and he scored on Beltran's sacrifice fly one out later that made it 3-0.
The Cardinals broke it open and chased Marquis by scoring three times in the sixth. With the bases loaded and one out, Westbrook coaxed a single through the middle to drive in Matt Adams. Carpenter then drove home two more with an RBI single to center.
Notes: Edinson Volquez (6-8), who set a new career high by making 20 starts in the first half, pitches his first game in the second half when he faces the Cardinals' Lance Lynn (11-4) Saturday night. . . . San Diego started a 10-day, 10-game road trip Friday. The Padres were 1-9 on their last 10-game trip. . . . Cardinals outfielder Matt Holliday missed his fourth straight game due to a lingering right hamstring issue. . . . Padres outfielder Jedd Gyorko was 0-for-12 since coming off the DL before singling in the fourth. . . . Molina double in the seventh was his 28th, matching his output last year.
Link to box score: St. Louis 9, San Diego 6
Link to game discussion at The Cardinal Nation message board