SAN FRANCISCO — This used to be Frank Gore's offense. He's still good — he rushed 22 times for 119 yards and a touchdown against the Green Bay Packers — but Saturday he wasn't even the 49ers' best running back. That was quarterback Colin Kaepernick, who rushed 16 times for 181 yards and two touchdowns.

Now, Gore is one of the many good complimentary players on the 49ers' offense

And now, the main thrust of the 49ers' offense is to get the ball to wide receiver Michael Crabtree.

Many times this season, offensive coordinator Greg Roman has scripted the first play of the game to go to Crabtree. Saturday night was no different. Kaepernick threw a five-yard pass to Crabtree. He caught it and ran four more yards to set up second-and-1.

Roman called Crabtree's number three players later. He ran deep down the field and was open, but he slipped. Kaepernick had to find another receiver at the last second. He turned to his left and fired to Vernon Davis. Sam Shields picked off the pass and returned it for a touchdown.

"I was mad about that the whole game," Crabtree said. "I felt I needed to redeem myself, go out there and do my job."

Crabtree redeemed himself alright. He ended up catching nine passes for 119 yards and two touchdowns.

After the game, Kaepernick explained how vital Crabtree has become for the 49ers' offense.

"He's a key player," Kaepernick said. "He's a playmaker. He's somebody who we just want to get the ball in his hands and see what he can do."

Kaepernick got Crabtree the ball on third down four times. Crabtree caught a 16-yard pass on one third-and-2, induced a defensive holding call on another third-and-2, caught a touchdown pass on third and goal from the Packers' 12-yard line and turned a one-yard pass into a 14-yard gain on third-and-15 in the fourth quarter. The 49ers went for it on fourth and one and converted.

Almost every time the 49ers needed a big play, they called Crabtree's number and he made it happen.

"I think it's pretty well documented how vital he is," coach Jim Harbaugh said after the game. "He was outstanding. The back-shoulder catches, those are great plays. The catch and runs. The yards that he gets after the catch. He's like a running back when he gets the ball in his hands. He was outstanding."

His best catch of the game was the 20-yard touchdown catch on second-and-6. He ran a simple post route — think Vernon Davis from last year's playoff win over the Saints. Crabtree cut and he had a corner all over his back, but he dove and caught the ball anyway.

"It was awesome," Roman said in the locker room after the game. "It's a new play. We worked on it last week. It didn't look good in practice, but we just felt it was something we wanted to do."

Crabtree has been outstanding all season, but this was the defining game of his NFL career.

Why? Because he played so poorly in the playoffs last season. He caught five passes for 28 total yards in two games. He was a tremendous disappointment.

"Last year it was bad," Crabtree said after the game. "But we're on a new year. I'm just trying to make the play and get the W."

He had excuses for playing poorly last season. Most of the 49ers' other receivers were injured, and opposing defenses could focus on Crabtree and shut him down.

But the 49ers are in the same situation this year. Their No.2 and No.3 receivers, Mario Manningham and Kyle Williams, are hurt. The Packers focused on Crabtree all night, but they just could not stop him.

"On big downs they were trying to double him and make sure he didn't make a play," said Kaepernick.

The double teams didn't work. There was no combination of Packers' defensive backs that could cover Crabtree.

Whoever plays the 49ers next week — the Seahawks or the Falcons — must figure out a way to stop Crabtree first and foremost. If they don't, they will lose.