Needing a spark in the second half, the 49ers got one - immediately - when Kyle Williams took the opening kickoff deep in the end zone and returned it 94 yards to the Minnesota 14-yard line.
Williams, who handled punt returns in the game, also returned a kickoff 50 yards in the fourth quarter. Kendall Hunter had been filling in on kickoffs with Ted Ginn out with an ankle injury. Hunter was averaging 23.2 yards a return and had a fumble last week against the Lions.
The 49ers had to settle for a field goal after Williams' first return; Frank Gore fumbled on the play after his second. "Obviously, we needed more because we didn't get the job done," Williams said. "I just followed the blocks and returned the kick for a real nice gain. I wish I could have finished it though."
Jim Harbaugh challenged two calls late in the game. It turns out, he shouldn't have been able challenge either. That's because Harbaugh burned his final time out just before challenging that Vikings running back Toby Gerhart had fumbled the ball. Still, Harbaugh was granted the challenge and was given an extra time out when the play was reversed.
"That was wrong, and I should not have" allowed the 49ers to challenge the play," referee Ken Roan said afterward. Harbaugh used the timeout he was given after the first reversal to challenge another play on the next Vikings series.
Et cetera - Harbaugh had no information on starting defensive players Isaac Sopoaga and Patrick Willis, both of whom had to be helped off the field in the fourth quarter. Neither player was limping after the game.
* NaVorro Bowman led all tacklers with 18 stops, the most of his three-year career. His previous high was 11 tackles in a 20-10 win over Cleveland last season.
* Newcomer Eric Bakhtiari suited up for the game and filled in for starting outside linebacker Ahmad Brooks after Brooks was shaken up in the first quarter.
-- Matt Barrows