SANTA CLARA — So much for the Niners being front-runners.
Down 21-17 to the Packers, at home and in the driving rain with 6:18 to play, Brock Purdy and the 49ers drove 69 yards to score a go-ahead touchdown with 67 seconds remaining to advance to the NFC Championship game.
It was the win of the season for the Niners.
It was the defining moment of quarterback Brock Purdy’s too-surreal-to-believe NFL career to date.
And it was entertainment of the highest order.
Here are the Studs and Duds from a game for the ages:
💪 STUDS
Brock Purdy
Was it his best game?
Hardly.
Sure, he had a beautiful touchdown pass in the first half, but the rain had him wiping his hands mid play. Something seemed off with him all contest — he threw two should-have-been-picked passes, and he, at one point in the second half, threw five straight terrible passes.
But when the game was on the line, Purdy came through in a massive way, authoring a 12-play, 69-yard game-winning drive, of which he threw for 47 yards and ran for another 11. His only incompletion on the drive? A George Kittle drop.
It was a drive for the ages for the second-year quarterback — a series that will immediately enter the Niners’ pantheon of greatness.
Dre Greenlaw
The man who provided one of the great defensive plays in 49ers history — his goal-line stop in Seattle in Week 17 in 2019 — added to his legend with his two-interception playoff game Saturday.
The picks were the difference in the game.

Christian McCaffrey
He’s pretty darn good. His 39-yard touchdown run was — dare I say it? — Barry Sandersesque. A burst, two jukes to the left, and paydirt.
His second touchdown run wasn’t as pretty, but it will be remembered forever.
George Kittle
A great tight end is a quarterback’s best friend. Heaven knows Brock Purdy needed one on Saturday. Kittle’s 4 catches for 81 yards led the Niners on a day where the pass offense had little to offer. His great post route resulted in the Niners’ first touchdown. His 32-yard third-down catch in the third quarter set up McCaffrey’s touchdown on the next play.
Jauan Jennings
A massive boost to the 49ers’ offense with Deebo Samuel sidelined. No, he’s not dynamic, but he’s a strong route runner who can pick up yards after the catch (with a few defenders on his back.) In the playoffs, chain movers show their value.
Chris Conley
Out there as a decoy with Samuel out, Conley came up with the longest play of the game-winning drive — a beautiful toe-tapping catch on the far sideline for 17 yards. The Packers didn’t know what hit them. Everyone watching did a double-take. What a play.

Fred Warner
A bit of rest did Warner well. He was anywhere and everywhere a linebacker could be on Saturday. Too bad he couldn’t also cover outside receivers for Ambry Thomas.
Mitch Wishnowsky
Four really nice punts!
The Rain
The bugaboo of the Niners’ all game, the precipitation subsided a bit for the game-winning drive, only to come back — with authority — for the Packers’ last possession of the game. Big ups to the atmosphere.

👎 DUDS
49ers Special Teams
When these two teams last played in the postseason, the Niners’ special teams won the game. Or, perhaps more specifically, the Packers’ special teams lost them the game. The roles nearly reversed Saturday. The Niners had a field-goal blocked to end the first half (the Niners went scoreless on Shanahan’s revered last-and-first of the half possessions) and allowed a 65-yard kick return once the game was tied, setting up the Packers’ go-ahead touchdown.
The Niners found themselves lucky Anders Carlson’s 41-yard field goal missed wide left ahead of San Francisco’s game-winning drive.
Ambry Thomas
The Niners’ cornerback committed two of the worst pass interference penalties you’ll ever see. One led to a field goal, the other to a touchdown. The Niners coaches would have been wise to bench him at halftime after seeing the first PI — he was being worked all over the field. They didn’t, and his second pass interference penalty turned a bad day into something of lore.
Thomas was also poor against the run and in the screen game. All in all, a day to forget that won’t be forgotten anytime soon.
Tashaun Gipson
Slipping all over the field, giving up big yardage in the process. Steve Wilks’ call to play Gipson and Logan Ryan as the team’s safeties Saturday was deeply puzzling, considering how good rookie Ji’Ayir Brown has been. Not sure the win overrides it.
Randy Gregory
Still hasn’t set an edge this season. He has picked up a 15-yard flag for acting out, though. I haven’t seen anything from Robert Beal yet, but he has to be a better option than Gregory right now.
Kyle Shanahan’s clock management
It feels silly to have expected something different, but Shanahan’s late-first-half time management left more than a bit to be desired, as did his playbook with Samuel out of the game. The strange part: it seemed as if he didn’t trust his defense just as much as he didn’t trust his offense.