The Cardinals suffered their first loss of the season, leaving Houston and Atlanta as the only unbeaten teams remaining in the NFL.
Bradford, who two years ago produced the second-largest passing yardage total for a rookie in league history, went a mere 7-of-21 for 141 yards.
Nevertheless, he provided enough scoring punch for a victory by hitting Lance Kendricks with a 7-yard touchdown pass in the first period and Chris Givens with a 51-yarder in the fourth that gave St. Louis a 14-point lead.
The Rams improved to 3-2 and under new coach Jeff Fisher have won one more game this season than they did all of last year. Arizona slipped to 4-1.
Arizona dominated time of possession and picked up 20 first downs to 12 for St. Louis, but the Cardinals were continually frustrated in their bid to find the end zone.
The Cardinals kept the ball for 9:24 during a first-period drive, but settled for a field goal. They had the ball for 6:32 on another march in the third period and eventually punt it away.
Arizona then drove to the St. Louis 6 and 13 on back-to-back drives in the fourth period and failed on a fourth-down play both times.
Given one final chance to score a touchdown when the Cardinals took over at the St. Louis 46 following a punt with less than 2 minutes remaining, quarterback Kevin Kolb was sacked and lost a fumble.
Kolb was 28-of-50 for 389 yards without a touchdown or interception.