PHILADELPHIA — This is how it ended.
Seriously, this is how it ended.
The 49ers’ success this season defied logic, especially considering the team won two playoff games (and six games before that) with rookie quarterback Brock Purdy.
The 49ers ran out of magic in their ugly 31-7 loss to the top-seeded Philadelphia Eagles in the NFC Championship Game, which saw them turn to yet another quarterback.
And that quarterback, veteran Josh Johnson, sustained a concussion that prevented him from going the distance.
Purdy sustained a right elbow injury on the 49ers’ second offensive possession. The 49ers had no choice but to turn to Johnson.
Johnson was plucked off the Denver Broncos’ practice squad after Jimmy Garoppolo sustained a fractured foot on Dec. 4. He was needed after Purdy’s injury. Then, Purdy returned in the mop-up role to draw a curtain on the 49ers’ season and finished with 23 yards on 4-for-4 passing.
Here are three takeaways from the 49ers’ season-ender:
The 49ers found a quarterback
The 49ers lost their top two quarterbacks to injuries. Trey Lance’s injury meant Garoppolo regained his old job. Then, Garoppolo’s injury opened the door for Purdy, the final overall pick of the 2022 NFL Draft.
Purdy became the story of the postseason, as the 49ers won each of his eight games to send the 49ers into the NFC Championship Game on a 12-game win streak.
While the 49ers’ quarterback situation was nearly unprecedented, it might have also brought about some clarity for the future.
Garoppolo is likely to be courted in free agency for a starting job elsewhere in the NFL. And Purdy proved over the second half of the season and into the playoffs that he is an NFL starter, too.
Purdy gave the 49ers no reason to look anywhere else for their starting quarterback entering the 2023 season.
The season started with the 49ers looking to find out what they had with Lance. It ended with Lance still being a mystery. Purdy, however, showed what he is capable of doing.
So the 49ers entered the season hoping their young quarterback would prove he is capable of being the player to lead the team into the future.
That quarterback proved to be Purdy.
Johnson overmatched in a rare appearance
Things did not go well for Johnson, who appeared flustered after entering the game against the Eagles’ suffocating defense.
Johnson’s day ended early in the third quarter when he sustained a concussion after his head slammed into the ground after Ndamukong Suh hit him as he was throwing.
Johnson completed 7 of 13 pass attempts for 74 yards. He was sacked twice and took three delay-of-game penalties.
Johnson, 36, has been with 14 different NFL teams in his 15 years. He also played in the United Football League, Alliance of American Football and the XFL.
This was his fourth stint with the 49ers. He did not appear in any games in his previous brief stops with the team.
His lack of game experience showed on Sunday, in particular when he faced third-and-20 plays on his first two drives and simply dropped a perfect center snap out of the shotgun formation.
That turnover enabled the Eagles to seize control at the end of the first half.
The 49ers’ defense surrendered a 14-play, 75-yard drive, capped by Miles Sanders’ 13-yard touchdown run. The Eagles took a 14-7 lead with 1:36 remaining in the second quarter.
The 49ers tried to get something going to end the half, but Johnson made a rookie mistake when he took his eye off the ball, dropped it and then failed to recover.
Eagles edge rusher Haason Reddick, who had the clean hit on Purdy that resulted in his elbow injury, recovered the fumble at the 49ers’ 30-yard line.
Four plays later, the Eagles cashed in on Boston Scott’s 6-yard touchdown run with :16 remaining in the half.
To highlight how impressive Purdy has been for the 49ers: Johnson is 36 years old and has been bouncing around since 2009, and Purdy looked far more poised and composed running the offense during the second half of the season and into the playoffs.
Doing more than his fair share
There were not many highlights for the 49ers on Sunday, but one was provided by a player who provided a huge lift to the team upon his midseason arrival.
Entering Sunday, the 49ers had not lost a game in which running back Christian McCaffrey started.
Although his superhuman powers could not rescue the 49ers on Sunday, he totaled 106 yards on 19 touches -- 15 carries and four receptions.
Things were already working against the 49ers. Coach Kyle Shanahan missed an opportunity to challenge a deep fourth-down pass to DeVonta Smith, who he did not catch cleanly. The 49ers gave the Eagles four first downs with first-half penalties.
But McCaffrey kept the team in the game — for at least a little while.
RELATED: Bosa hit on sideline, limps off field in 49ers-Eagles battle
McCaffrey bounced off four attempted tackles to pull the 49ers even midway through the second quarter with a 23-yard touchdown run.
Safety Marcus Epps missed, cornerback Darius Slay whiffed, and cornerback C.J. Gardner-Johnson and defensive linemen Javon Hargrave converged but flailed.
McCaffrey and the bulk of the 49ers’ offensive playmakers are going nowhere.
McCaffrey, Deebo Samuel, George Kittle and Kyle Juszczyk arę all signed through the 2025 NFL season. Brandon Aiyuk, who is signed through 2023, is eligible for a contract extension this offseason.