Though it wasn’t necessarily a surprise to anybody in the locker room Sunday, the fact that the Vikings earned a 23-17 win over San Francisco was a shocker to many.

Here are five takeaways:

1. Darnold duality

In the shadow of his own goal post, QB Sam Darnold launched a pass into double coverage and somehow connected with Justin Jefferson deep downfield. It went for a 97-yard touchdown as Jefferson weaved his way through the open field before finishing in the end zone. The arm strength that Darnold showcased on that particular throw was incredible. It was on display late in the game, as well, when he delivered a perfect ball to speedy receiver Jalen Nailor down the seam. That part of his game is undeniable. But Darnold also threw a costly interception to 49ers linebacker Fred Warner that kept things interesting.

2. O’Connell aggression

After watching Darnold throw an interception at a key moment, head coach Kevin O’Connell went right back to him shortly before halftime. That’s a testament to the trust that O’Connell has in Darnold, regardless of circumstance. Fittingly, Darnold rewarded O’Connell for his faith, leading the Vikings into field-goal range. The drive was impressive as Darnold made a couple of nice throws and capped it off with an 18-yard scramble.

3. Legit defense

There were thoughts that the Vikings might have the talent to be a top 10 defense heading into this season. Maybe that was an undersell. Never mind that it’s still a pretty small sample size. It sure looks like defensive coordinator Brian Flores has a very good group on his hands. The splash plays spoke for themselves. Whether it was edge rusher Andrew Van Ginkel and safety Harrison Smith combining for a goal line stop, safety Josh Metellus coming up with an interception, or the constant pressure being applied to 49ers QB Brock Purdy, the Vikings got what they needed.

4. Receiving skills

With Jordan Addison out with an ankle injury, Jefferson and Nailor were the primary pass catchers for the Vikings. Both played extremely important roles. The biggest play from Jefferson was the 97-yard TD. The biggest play from Nailor was a 26-yard reception down the seam that helped put the game on ice. Whenever the Vikings get fully healthy, they are going to be hard to defend with Jefferson, Addison and Nailor lining up across the formation. Plus, star tight end T.J. Hockenson is also going to get healthy at some point, and that adds another weapon.

5.Special teams

In need of a splash play early, the Vikings got it from C.J. Ham. Maybe the most respected player in the locker room, Ham busted through the trenches and blocked a punt that was recovered by Jay Ward. It was redemption for Ham this weekend after an uncharacteristic fumble by him last weekend.