SANTA CLARA, CALIF. – Kyle Shanahan's San Francisco 49ers were in the process of rushing for 208 yards, three touchdowns and a 5.3-yard average against a Vikings defense missing all four starting linemen.

And yet one of the league's offensive wunderkinds felt the need to call a trick play on third-and-8 from the Vikings 44-yard line with 3 minutes, 47 seconds left in the first half of Sunday's 34-26 49ers victory at Levi's Stadium.

It was a bad call that turned out good for the 49ers, bad for the Vikings' momentum and probably costly for coach Mike Zimmer's bank account once the league office critiques his critiques of Sunday's officials.

Zimmer had already complained with some merit about the 49ers' affection for holding.

"These guys hold all the time," Zimmer said. "They grab us around the waist, grabbing our backs. They don't want to call it every play, but until they start calling it every play, they're not going to stop doing it."

Later, Zimmer was asked about what happened on what should have been Shanahan's ill-fated trick play while trailing 14-7 but averaging 5.8 yards per rush on 17 first-half carries.

San Francisco quarterback Jimmy Garoppolo threw a backward pass to his right to receiver Jauan Jennings. Jennings, it appeared, was going to target open tight end George Kittle crossing from the left side of the line to his right.

Only Kittle couldn't cross because he got tangled up with cornerback Patrick Peterson, who was in press coverage. Peterson was called for holding Kittle, negating what ended up becoming Jennings' Plan B completion back to the left for minus-3 yards to Jeff Wilson.

"I heard the guy [Kittle] ran into Peterson," Zimmer said. "I didn't see it. I was watching other stuff. … I better stop with the officials."

Even if you replayed that Peterson-Kittle collision 100 times, both sides of that call/no-call debate could be argued 100 times.

Yes, Peterson prevents Kittle from releasing to the inside by putting his left arm on Kittle's chest and his right arm on Kittle's back. They are both shoving at that point when Kittle does essentially run through Peterson as they fall.

The viewpoint from this old-school guy, who hates the number of defensive penalties in today's game, is it was a close call, but the right call. Others will disagree.

"I feel we had it guarded up pretty well," Vikings linebacker Eric Kendricks said. "It is what it is."

And what it is was a game-changing play that set in motion a 21-point barrage of points that turned the Vikings' 14-7 lead into a 28-14 deficit over the next 8½ minutes.

The 49ers converted two more third downs on that drive, including a 24-yard pass to Brandon Aiyuk on third-and-18. Throw in a neutral zone infraction on Sheldon Richardson as the 49ers hurried to the line of scrimmage and that snap moved the ball from the Vikings 30-yard line to first-and-goal at the 3.

Garoppolo threw a touchdown pass to Jennings on the next play. And, yes, that meant the Vikings have now given up a total of 66 points to eight of 11 opponents in the final two minutes of the first half.

"It's disappointing," Zimmer said of his defense's ongoing end-of-half woes. "But it's not like it was a two-minute drill. It was 14-14 at halftime. I wasn't too upset."

Kendricks was, however.

"It's difficult," he said. "I feel like we've been struggling a little bit in two-minute drill before the half. We got to find ways to get off the field."

And why are you struggling in that area?

"A bunch of things," Kendricks said.

The 49ers then took the second-half kickoff and went 75 yards in six plays to take a 21-14 lead on receiver Deebo Samuel's second rushing touchdown of the game.

One snap later, Kirk Cousins' league-low two interceptions became three when linebacker Azeez Al-Shaair returned a terrible pass 24 yards to the Vikings 2. Another snap and it was 28-14, Niners.

"We're still in it," Kendricks accurately said of the Vikings' playoff chances. "Don't count us out."

OK, but it would help if y'all found a way to stop teams from scoring and seizing momentum right before the half.