Rodriguez put runners at the corners in the top of the ninth but set down the next three batters, including a strikeout of Skip Schumacher, to record his 293rd career save and give the Brewers their fifth win in their last 10 games.
Rodriguez preserved the win for Randy Wolf (3-6), who allowed two runs on eight hits and struck out six in 6 2/3 innings.
St. Louis lost Matt Holiday for the remainder of the game when he was hit in the left knee by a pitch from Wolf in the first inning. Holiday's 15-game hitting streak remained intact because he did not complete an official at-bat.
Joe Kelly (1-2) took the loss, surrendering three runs -- two earned -- on six hits and a walk for the Cardinals, who have dropped four of their last five games.