SANTA CLARA — The 49ers' top two players on offense had quiet days statistically, because, well, they could.

The 49ers dominated the Vikings 27-10 in Saturday's NFC Divisional Playoff with an offensive performance that harkened back to the early weeks of this season, when Jimmy Garoppolo was regaining his confidence after returning from an ACL injury. Then, the team heavily relied on its run game, taking pressure off the quarterback and his receivers alike.

Garoppolo completed 11 of 19 passes for 131 yards and one touchdown with one interception for a 74.7 rating, content to hand off the ball more.

“I mean, it was awesome,” Garoppolo said after the win. “We had one drive where we literally didn’t pass the ball. Came off to the sideline, and we were just as excited as we have been offensively.

“When you can do that to a team, it makes it tough on defenses when they have to bring more guys into the box, start bringing safeties down. We ran the hell out of the ball, and those guys up front battled their a-- off today. It was fun.”

49ers tight end George Kittle also didn't produce his usual big numbers, catching three of five targets for 16 yards -- his lowest total of the season. While what Kittle provides in the running game is invaluable and doesn’t show up on the stat sheet, he's regularly relied on to make plays.

But against the Vikings, 49ers coach Kyle Shanahan threw a curveball. He dialed up a run-heavy game, at one point calling 12 runs in a row over multiple drives. The 49ers finished the day with 186 rushing yards on 47 carries.

Tevin Coleman took the bulk of that workload, carrying the ball 22 times for 105 yards and two touchdowns, matching his season high in rushing yards from Week 8.

Kittle, however, might be even happier with the 49ers running the ball more. The only stat that matters to him is in the win-loss column.

“I think 47 rushes is pretty good, right?” Kittle said. “I think we had close to 200 on 47 rushes. Yeah, I think we ran the heck out of the ball today. Playing against "six" techniques with the linebackers on the inside, it’s pretty easy to get those combo blocks up to them.

“We dominated the edges today. It was a great day to run the football. I personally feel like we don’t run the ball enough every single week. So, we finally got 47 rushes, so I was pretty happy about that. I think we should have gotten to at least 50.”

On the 49ers' opening drive, Garoppolo completed five of his six passes for 57 yards, culminating in a 2-yard touchdown strike to Kendrick Bourne, giving the 49ers an early lead.

“Yeah, I think we ran the ball well too on that drive,” Garoppolo said. “Guys were talking on the sidelines that we had opportunities to run it. Kyle did a great job getting us into the right calls and everything, and guys up front did the rest.”

[RELATED: Ward sends strong message to 49ers' NFC Championship Game foe]

Garoppolo even mentioned that the 49ers' offensive line fed off Shanahan’s play-calling and dominated the Vikings' defensive line.

“Oh yeah, those guys get fired up, man,” Garoppolo said. “You can see it in the huddle. As you’re calling the play and it’s a run play, their eyes light up and they get excited. I love when those guys are just teeing off like that. It’s fun. It makes my job very easy.”