The 49ers went from having little chance of beating the Eagles in the first half of Sunday's eventual 31-7 NFC championship game loss to zero chance in the second half.
Kyle Shanahan and the players did a remarkable job to get so deep into the playoffs with the team's third-string QB, rookie seventh-rounder Brock Purdy. But the Niners' 12-game winning streak was bound to come to a screeching halt thanks to the 1-2 punch of Purdy's early elbow injury and backup Josh Johnson's game-ending concussion.
GAMING SURVEY: Complete short survey for chance to win international football shirt of your choice!
The 49ers were able to tie the game 7-7, taking advantage of a short field with a powerful Christian McCaffrey run to the end zone with 8:29 left in the second quarter. That was the only play that resembled the 49ers' diverse, multiple and often explosive offense.
Even the 49ers weren't immune to suffering from losing the one dimension every modern NFL team needs to win a game: passing. There were many other things the 49ers didn't do well, including staying disciplined on defense in key moments. But their inability to pass made the Eagles' task of building and protecting a lead much easier.
"Losing feels awful, but yeah, this one feels harder," Shanahan told reporters after the game. "This one was a lot harder than I thought."
MORE: 49ers-Eagles NFC championship game fight results in multiple ejections
As the 49ers have fallen a little short of winning the Super Bowl under Shanahan, he's made some key mistakes along the way. That included not quickly challenging what shouldn't have been a ruled a long fourth-down catch by DeVonta Smith that set up the Eagles' first TD.
Can one really blame Shanahan, though, for an offense that got suddenly short-handed in the worst possible way? No.
Johnson's fourth stint with the 49ers started a little more than a month ago as he was signed for depth with Jimmy Garoppolo (left foot) on the shelf, and happened to go through the playoffs. Johnson had little experience in Shanahan's offense while trying to navigate through a nasty Eagles pass rush. He played every bit like a 36-year-old journeyman, killing most of what the 49ers wanted to, and could, do offensively.
Purdy doubters wanted to chalk up much of his success to being in Shanahan's well-oiled system with elite supporting skill players such as McCaffrey, Deebo Samuel, George Kittle and Brandon Aiyuk. Johnson's shakiness proved that Purdy was not some plug-and-play caretaker, but rather an essential playmaker.
MORE: Steve Young jokes about 49ers' QB misfortune after Brock Purdy, Josh Johnson injuries
What was Shanahan to do then? How about when Johnson suffered a head injury on the first 49ers possession of the second half, down 21-7? Instead of putting McCaffrey in as the emergency No. 3 QB, Shanahan trotted out a hurting Purdy for 16 of the final 17 offensive plays. The result was 14 runs, two very short Purdy completions and a McCaffrey desperation direct-snap heave.
As Fox color commentator Greg Olsen put it well doing the broadcast, Shanahan was left trying to make a winning hand without having any good cards. The 49ers coach wasn't "giving up" by turning to runs while down multiple possessions. The alternative of putting McCaffrey in a limited traditional-passer role didn't make sense.
The only thing that would have helped Shanahan was having a third actual, capable downfield passing QB dressed who could keep him team stay competitive with a legitimate offense instead of squashing so many dangerous weapons in a futile comeback attempt. Had an old NFL rule been in place, the 49ers could have had a non-Garoppolo option available after Purdy and Johnson went down.
MORE: Projecting the 49ers' sudden QB competition between Purdy and Lance
No one should come down hard on Shanahan when looking at the big picture regarding the 49ers' season. There's no shame in his No. 2-seed team losing to the No. 1 Eagles on the road. He did one of his greatest coaching jobs in getting to the ultimate point of the NFC playoffs with Purdy replacing Garoppolo after Garoppolo replaced Trey Lance.
"We really wanted an opportunity to play that team," Shanahan said of the Eagles. "They played great. They did good things. But we wish we had a better opportunity than we did today."
The 49ers just ran out of luck and options at the end of a season riddled by injuries to their QBs. But it would have been nice for the league if they had had a fighting chance to pass their toughest test.