The team later announced Garoppolo will not return.
Rookie Jacoby Brissett, who was taken in the third round out of North Carolina State, replaced Garoppolo late in the second quarter.
Garoppolo, starting his second straight game for the suspended Tom Brady, had already thrown three touchdown passes when he was taken to the turf after a scramble by linebacker Kiko Alonso with 4:04 left in the second quarter.
The pass was completed for a first down but Garoppolo, who appeared to have been limping slightly just before this play, got up slowly and went to a knee as the training staff worked on him. He appeared to grimace when his shoulder was touched inside his shoulder pad.
Garoppolo was 18 of 27 for 234 yards before leaving.