The Bucs (4-2) shocked the Rams by marching 81 yards for the winning score with time running out.
Freeman, who went 23-of-40 for 212 yards, kept the drive alive on a 4th-and-3 play from the Rams' 30-yard line by finding Kellen Winslow for a key 9-yard reception.
He moved the Bucs to the 1-yard line after hitting Mike Williams on a 3rd-and-10 pass with 20 seconds remaining and then launched the winning score to Carnell Williams.
Sam Bradford completed 13-of-26 passes for 126 yards with two touchdowns for St. Louis (3-4).
Steven Jackson racked up 110 yards on 20 carries and grabbed a pair of passes for 35 yards in the defeat.
UPI horse racing weekend preview
Bo Jackson: I can't help Jameis Winston anymore