GREEN BAY, Wisc. -- Rookie cornerback Ambry Thomas’ steady improvement after moving into the starting lineup provided the 49ers with a huge lift when they needed it most.
However, Thomas was unavailable Saturday night in the 49ers’ divisional-round playoff game against the Green Bay Packers due to a deep knee bruise.
The 49ers turned to veteran Dontae Johnson, who started and played all but two snaps in the 13-10 upset victory over the top-seeded Packers at Lambeau Field.
With our All Access Daily newsletter, stay in the game with the latest updates on your beloved Bay Area and California sports teams!

And when Johnson had to leave the field, veteran Josh Norman rose to the challenge against Aaron Rodgers and Davante Adams.
Johnson struggled — as did the entire 49ers defense on the opening drive of the game — on the Packers’ game-opening drive. Johnson gave up pass plays of 14 and 10 yards to Adams. He missed a tackle of running back Aaron Jones that went for a 19-yard gain.
But Johnson turned around his night and made a major contribution to the 49ers’ defensive masterpiece that limited the Packers to just three points over the final 50 minutes of the game.
Norman started 14 games during the regular season before losing his job to Thomas. He entered Saturday night when Johnson was shaken up and missed two plays in the fourth quarter. The Packers, leading 10-3, were looking for the knockout blow.
San Francisco 49ers
Find the latest San Francisco 49ers news, highlights, analysis and more with NBC Sports Bay Area and California.
Rodgers immediately identified Norman and went after him with a back-shoulder throw intended for Adams. Norman had good coverage on the play to force the incomplete pass. Arik Armstead sacked Rodgers one play later to set up the punt that changed the game.
Jordan Willis blocked the punt, and Talanoa Hufanga scooped it up and scored on a six-yard return to tie the game.
Willis played 18 snaps on defense to go along with his eight plays on special teams. Hufanga played two snaps on defense, including coverage in the deep middle on Rodgers’ throw for Adams — Rodgers’ final pass attempt of the night.
Thomas appears to have a good chance to return to action when the 49ers play in next week's NFC Championship game.
Here is how much action every 49ers player saw on offense, defense and special teams . . .
Quarterback: Jimmy Garoppolo 54
Running back: Elijah Mitchell 39, Kyle Juszczyk 30, JaMycal Hasty 2
Wide receiver: Brandon Aiyuk 52, Deebo Samuel 37, Jauan Jennings 30, Trent Sherfield 2, Travis Benjamin 2
Tight end: George Kittle 53, Charlie Woerner 21
Offensive line: Laken Tomlinson 54, Daniel Brunskill 54, Tom Compton 54, Alex Mack 54, Trent Williams 53, Colton McKivitz 3
Defensive line: Nick Bosa 54, Arik Armstead 42, D.J. Jones 30, Samson Ebukam 29, Jordan Willis 18, Kevin Givens 18, Arden Key 17, Kentavius Street 12, Charles Omenihu 11
Linebacker: Fred Warner 56, Dre Greenlaw 54, Azeez Al-Shaair 14
Cornerback: Emmanuel Moseley 56, Dontae Johnson 54, K’Waun Williams 42, Josh Norman 2
Safety: Jimmie Ward 56, Jaquiski Tartt 56, Talanoa Hufanga 2
RELATED: Grading 49ers' offense, defense in comeback win over Packers
Special teams: Mark Nzeocha 20, Mark Nzeocha 22, Woerner 20, Hufanga 20, River Cracraft 17, Sherfield 17, Ross Dwelley 16, Darqueze Dennard 12, Norman 12, Mitch Wishnowsky 8, Taybor Pepper 8, Benjamin 8, Juszczyk 8, Johnson 8, Willis 8, Robbie Gould 6, Omenihu 6, Armstead 8, Jones 5, Jake Brendel 3, Brunskill 3, Tomlinson 3, Compton 3, McKivitz 3, Hasty 3, Ward 3, Key 3, Samuel 2, Jeff Wilson 1, Givens 1
Did not play: QB Trey Lance, OL Aaron Banks
Not active: CB Ambry Thomas, RB Trey Sermon, S Jarrod Wilson, LB Marcell Harris, DB Deommodore Lenoir, OL Jaylon Moore, DL Maurice Hurst