"There's no reason for that hit in the game these days, especially when you go for someone's head," Vikings guard Josh Kline told reporters, per the St. Paul Pioneer Press. "... It's just very disappointing that someone would do that. There's no place for that... They put that block (crackback) out for a reason."
O'Neill was down for a few minutes before leaving the field under his own power. Bosa, meanwhile, was flagged for unnecessary roughness on the play.
"I didn't see the hit," Vikings coach Mike Zimmer said. "I just heard them say it was a cheap shot, which I think it was."
San Francisco took a two-touchdown lead a few minutes later to pull away.
Rashod Hill replaced O'Neill on the following drive. O'Neill, a second-round pick out of Pittsburgh in 2018, started all 15 regular-season games he appeared in this season.