San Francisco 49ers quarterback Brock Purdy (13) reacts to a...

San Francisco 49ers quarterback Brock Purdy (13) reacts to a touchdown pass to 49ers running back Christian McCaffrey during the second half of an NFL wild-card playoff football game against the Philadelphia Eagles on Sunday, Jan. 11, 2026, in Philadelphia. Credit: AP/Chris Szagola

PHILADELPHIA — Jauan Jennings hid his eyes behind sunglasses, but he could not hide his emotions with the San Francisco 49ers set to play a divisional-round playoff game against the Seattle Seahawks next weekend.

The wideout-turned-backup quarterback slammed his fists on the table and essentially told the Seahawks to bring it on. He leaned into the microphone and — channeling his inner Bart Scott — yelled, “Can’t wait!”

The 49ers are in for a playoff treat, thanks in large part to a pretty neat trick pulled off by Jennings. He fired a 29-yard touchdown pass to Christian McCaffrey to give the 49ers the lead on the first play of the fourth quarter, and Brock Purdy threw a go-ahead 4-yard touchdown pass to McCaffrey with 2:54 remaining as the 49ers beat the defending Super Bowl champion Philadelphia Eagles, 23-19, in the Wild Card round on Sunday.

On the trick play, Jennings was pitched the ball, rolled right and hit McCaffrey for an over-the-shoulder catch for a 17-16 lead.

“I looked up, the ball’s in the air and Christian tracked it,’’ Purdy said. “It was wobbling in the wind. The fact that Christian caught it over his shoulder, dude, I was like, ‘Oh my gosh.’ ’’

Maybe if the Eagles watched the 49ers’ Super Bowl loss to Kansas City after the 2023 season, they wouldn’t have been so surprised by Jennings’ play. The former high school quarterback threw a touchdown pass on a similar play in that Super Bowl game, and this one to McCaffrey put him on a list with Purdy, Joe Montana and Steve Young as 49ers quarterbacks who have thrown for multiple career touchdowns in the postseason.

Jennings had 66 yards receiving and 48 rushing in addition to his TD pass. “JJ thinks he can make every play known to man,” coach Kyle Shanahan said.

Philadelphia Eagles wide receiver A.J. Brown (11) is unable to...

Philadelphia Eagles wide receiver A.J. Brown (11) is unable to make the catch as San Francisco 49ers cornerback Deommodore Lenoir (2) defends during the second half of an NFL wild-card playoff football game Sunday, Jan. 11, 2026, in Philadelphia. Credit: AP/Chris Szagola

The play was called “Skyy Bang reverse pass” — in honor of wide receiver Skyy Moore — and the double reverse was suggested by offensive coordinator Klay Kubiak. “It was a hell of a suggestion,” Shanahan said.

Purdy threw for 262 yards. He had two passes intercepted by Quinyon Mitchell, but the Eagles — who took a 19-17 lead on Jake Elliott’s 33-yard field goal with eight minutes left — scored only three points off the turnovers.

Eagles quarterback Jalen Hurts threw incomplete on a last-gasp fourth-and-11 attempt from the 49ers’ 21 with 43 seconds left. “I just didn’t make the play,’’ he said. “I own it. I own it all.”

The Eagles again were doomed by a lethargic offensive effort under embattled offensive coordinator Kevin Patullo. In their six-point second half, Hurts threw for only 75 of his 168 yards, Saquon Barkley had only 35 of his 106 rushing yards and Philadelphia was 2-for-9 on third downs. The Eagles totaled only 36 yards on 16 plays in the third quarter.

San Francisco 49ers quarterback Brock Purdy (13) reacts to a...

San Francisco 49ers quarterback Brock Purdy (13) reacts to a touchdown pass to 49ers running back Christian McCaffrey during the second half of an NFL wild-card playoff football game against the Philadelphia Eagles on Sunday, Jan. 11, 2026, in Philadelphia. Credit: AP/Chris Szagola

The teams traded touchdowns on their opening drives. Purdy threw a 2-yard TD pass to Demarcus Robinson, who had had 111 yards receiving. The Eagles scored on a 1-yard sweep by Dallas Goedert, who became the first tight end to rush for a score in NFL postseason history, but Elliott missed the extra point.

Hurts hit Goedert for a 9-yard touchdown and the 49ers’ Eddy Pineiro kicked a 36-yard field goal that made it 13-10 at halftime.

“Our team fights,” McCaffrey said. “I love this group so much. I don’t have enough good things to say about it. I’m proud to be a part of this team.”

The 49ers lost star tight end George Kittle, who suffered a right Achilles tendon tear late in the first half. “I think everyone’s just hurting for Kittle,” Shanahan said.

Said McCaffrey, “This team has carried the character of George Kittle throughout the entire year. Since I got traded here, he’s the heart and soul of the entire team. It’s a tough loss. When he’s not playing, it means a lot. When you lose a leader like that, you never really lose him because his presence is still in the locker room. His energy is still here.”

Eagles wide receiver A.J. Brown had to be separated from coach Nick Sirianni by chief security officer Dom DiSandro during a sideline blowup late in the first half. Brown dropped a third-down pass and was slow to get off the field when Sirianni chased him down on the sideline. Sirianni said he rushed after Brown to get him off the field so they could punt.

“I love A.J. I think he knows how I feel about him. I have a special relationship with him,” Sirianni said. “We probably went through every emotion you can possibly have together. We’ve laughed together, we’ve cried together, we’ve yelled at each other. We’re both emotional. I was trying to get him off the field, and that happens in this game. It happens in this game, but I love him.”

SUBSCRIBE

Unlimited Digital AccessOnly 25¢for 6 months

ACT NOWSALE ENDS SOON | CANCEL ANYTIME