There have been two consistent storylines to theSan Francisco 49ers' season: They lose star players to injuries, and they keep winning in spite of it.
Not many teams have overcome the amount of important injuries that the 49ers have this season. In the first half Sundaythey lost tight end George Kittle to an Achilles injury. And the 49ers won anyway, upsetting the Eagles 23-19 in the NFC wild-card round in a victory that ended Philadelphia's quest for a second straight Super Bowl title.
The 49ers went 12-5 and had a shot at the No. 1 seed in the NFC all the way until the final game of the regular season despite the slew of injuries through the year. When they lost Kittle Sunday, they had at least been through that situation before.
ReceiverJauan Jenningsthrew a touchdown pass toChristian McCaffreyin a key turning point at the beginning of the fourth quarter, and McCaffrey caught another touchdown in the final three minutes to give the 49ers a late lead.
Brock finds CMC for six‼️pic.twitter.com/kEgfXk96SI
— San Francisco 49ers (@49ers)January 12, 2026
The Eagles drove to the 49ers' 20-yard line but that's when San Francisco's defense tightened up, and on a fourth-and-11 play that would determine their season Jalen Hurts threw into triple coverage over the middle and it was batted down incomplete.
The Eagles' season ends in a massive disappointment, but it couldn't have been too surprising based on how inconsistent they had been. Their offense never found its footing during the regular season and Sunday was more of the same, with a lack of execution and hardly any big plays. The dominant team that won a Super Bowl last season rarely showed up this season, and that carried over to the playoffs.
The 49ers deserve credit though. There haven't been many teams better at overcoming adversity.
Both teams struggle in windy conditions
Bad weather games can make for a fun setting on television, but it can lead to some sloppy football.
Sunday was windy in Philadelphia, with gusts up to 36 miles per hour according to the Fox broadcast. It showed. Receivers had trouble tracking passes in the air. Both quarterbacks struggled with accuracy at times. Neither offense got much going.
The 49ers' offense wasn't helped by yet another major injury, something that has been an unfortunate theme throughout their season. Kittle went down with an Achilles injury as he was being tackled. He was carted to the locker room. If it is a torn Achilles for Kittle, who is 32 years old, it's an injury that could affect the 49ers into next season as well.
The Eagles' issue this season hasn't been injuries, but a flailing offense and angst within their own ranks. That was exemplified in the first half by A.J. Brown not being able to haul in a couple of deep passes, then Fox showing Nick Sirianni sprinting down the sideline to tell his receiver to get behind the sideline, perhaps to avoid the Eagles getting a penalty for too many men on the field, and the twoneeding to be separated as they had words with each other.
Another look at the exchange between AJ Brown and HC Nick Sirianni on the sideline.pic.twitter.com/Syn0hr0MFK
— FOX Sports: NFL (@NFLonFOX)January 11, 2026
The 49ers had a tough break at the end of the first half. Purdy scrambled in the final seconds, trying to get more yards for a field-goal attempt. Initially it was ruled he got out of bounds with one second on the clock, but a replay review showed he fumbled before landing out of bounds. There was a 10-second runoff due to the review and the half was over.
The first half ended with the Eagles leading 13-10, but neither team could have felt great about how it played.
49ers get heroics from Jauan Jennings, Brock Purdy and their defense
The 49ers weren't getting much from their conventional offense so they went back to Jennings throwing the ball. Thatworked for a touchdownin the Super Bowl two years ago, and it worked to give the 49ers a lead early in the fourth quarter. Jennings, who was Rivals' 13th-ranked dual-threat QB in his class but switched to receiver at Tennessee, got the ball on a reverse and looked downfield. He threw to McCaffrey, who did a remarkable job of tracking the ball and caught it over the shoulder for a touchdown. The 49ers hadn't played great and suffered a huge loss when Kittle exited the game, but led 17-16 with that play.
The 49ers gave it back. Cornerback Quinyon Mitchell picked off a bad pass from Purdy. Mitchell had two interceptions and a forced fumble. The Eagles' drive stalled but Jake Elliott hit a field goal and Philadelphia led again.
The 49ers weren't giving up. Purdy led a drive downfield and found McCaffrey in the end zone for a 4-yard touchdown with 2:54 left. San Francisco missed the extra point but led 23-19.
The Eagles needed a touchdown but it was hard to trust their offense to put together a drive. Hurts threw a nice pass over the middle on third down but Brown dropped it, which led to a fourth-and-5. Hurts came up with a completion to Dallas Goedert to keep the drive alive. The Eagles kept it moving after that and reached the 49ers' 20-yard line. Hurts threw too high to DeVonta Smith on third down and he couldn't haul it in, then on fourth-and-11 Hurts tried to squeeze in a pass to Goedert and it was easily knocked down.
It will be a long offseason for the Eagles, figuring out how they took such a step back from their Super Bowl winning season. The offseason hasn't started yet for the 49ers, which is remarkable given all they've dealt with.
Follow along with Yahoo Sports for live updates, highlights and more as the Philadelphia Eagles host the San Francisco 49ers for wild-card weekend:
Featured
Ian Casselberry
Ian Casselberry
Jauan Jennings on go-ahead TD pass: ' I didn't even see the ball, man'
Our postgame 1-on-1 with #49ers WR/QB Jauan Jennings, who said his pass play was put in a few weeks ago. "I didn't even see the ball, man."
The 49ers and Seahawks will face each other for a third time this season, matched up in the divisional round after San Francisco's 23-19 win in Philadelphia.
The two teams split their regular-season meetings. The 49ers won in Week 1, 17-13. But the Seahawks answered decisively in the Week 18 finale with a 13-3 victory.
Ian Casselberry
One last jab from 49ers social media
Will the 49ers dine on cheesesteaks after their big win over the Eagles?
The Eagles have a second-and-11 at the San Francisco 21-yard line with 1:28 remaining.
Ian Casselberry
Eagles convert on fourth down
Following A.J. Brown's drop, Dallas Goedert gets the Eagles a first down on fourth-and-10 with a 15-yard reception. That moves Philadelphia to the 49ers' 45-yard line.
49ers WR Demarcus Robinson over 100 yards receiving
Demarcus Robinson makes a 16-yard catch on first-and-10 from the San Francisco 44-yard line. That gives him 111 yards on 6 receptions today.
Demarcus Robinson's 111 yards receiving are 2nd most for a #49ers in a playoff game under Kyle Shanahan. Deebo Samuel had 133 vs Seahawks in 2022 wild card game
The Eagles are currently missing one of their top defensive lineman. Jordan Davis is being evaluated for a calf injury, according to Fox Sports' Erin Andrews.
Ian Casselberry
Field goal, Philadelphia: Eagles 19, 49ers 17
The Eagles regain the lead on a 33-yard field goal by Jake Elliott. That completed a 47-yard, 8-play drive that took 4:55.
Jake Elliott gives the Eagles the lead back with 8 minutes left in the 4th
Christian McCaffrey's longest TD catch by air yards
Jauan Jennings' 29-yard touchdown pass to Christian McCaffrey traveled 26 yards downfield relative to the line of scrimmage, the deepest TD reception by air yards of McCaffrey's career.#SFvsPHI | #FTTBpic.twitter.com/i0vjQCrNQh
Philadelphia can't put together a drive to answer the 49ers' touchdown.
The possession began with a holding penalty on Darius Cooper. That wiped out an 11-yard gain by Saquon Barkley. With 20 yards to gain for the first down, the Eagles could only manage a 7-yard rush by Barkley between two incompletions by Jalen Hurts.
Braden Mann punts 46 yards and San Francisco begins at its 31-yard line after a 10-yard return by Skyy Moore.
Ian Casselberry
No callback on 49ers' TD
A flag was thrown on the 49ers' touchdown, which made it appear as if the score could be called back. However, the penalty was on the Eagles' Jalen Carter for roughing the passer.