Here's a play-by-play recap of all the passing plays from the scrimmage sessions:
1st Scrimmage Session
1. Trey Lance hits Jauan Jennings on a 15-yard slant. Javon Kinlaw recorded pressure on Aaron Banks on the play.
2. Ray-Ray McCloud runs a jet sweep for 2-3 yards.
3. Nate Sudfeld hits Tyler Kroft for 4 yards in the flat.
4. Brock Purdy throws an incompletion to Jauan Jennings, missing low at Jennings' feet on the play-action pass.
5. Danny Gray runs a jet sweep and was met by Marcelino McCrary-Ball there after 4 yards.
6. Trey Lance throws an incompletion to Kyle Juszczyk in the flat. An Azeez Al-Shaair blitz got there immediately off the play-action pass, giving Lance no room to throw the football.
7. Nate Sudfeld throws a 45-yard interception to Charvarius Ward intended for Ray-Ray McCloud. The pass was underthrown, and Ward made a great play for the interception.
8. Trey Lance throws 4-yard pass to Elijah Mitchell in the flat. Aaron Banks had a good pass-protection rep against Nick Bosa on the play.
9. Trey Lance throws an incompletion to Brandon Aiyuk. The ball was a little overthrown, and Ambry Thomas was in coverage.
10. Trey Lance throws a 10-yarder to George Kittle over the middle. However, Fred Warner recorded a pass breakup on the play, as Kittle couldn't hold on. I recorded it as a drop by Kittle.
11. Nate Sudfeld is intercepted by Tarvarius Moore on a throw intended for Brandon Aiyuk. Sudfeld eyed down Aiyuk coming out of a break on a 20-yard post route, and safety George Odum beat the receiver to the spot while reading Sudfeld's mind, breaking up the pass, while Moore caught the batted ball.
12. Nate Sudfeld throws a 10-yard pass to Brandon Aiyuk.
13. Brock Purdy finds Troy Fumagalli in the flat for 7-10 yards.
14. Brock Purdy finds Troy Fumagalli for a 5-yard completion. Qwuantrezz Knight blitzed on the play and recorded a sack.
15. Kevin Givens recorded a sack against Spencer Burford.
16. Trey Lance avoids the sack and runs for 5 yards. There was great coverage everywhere on the play.
17. Trey Lance throws an 18-yarder to Ray-Ray McCloud. Ambry Thomas was in soft coverage. Charles Omenihu recorded a pressure on Jaylon Moore on the play.
18. Nate Sudfeld throws an incompletion to Brandon Aiyuk with Deommodore Lenoir in coverage. The ball was a bit overthrown, and landed off the fingertips of Aiyuk.
19. Nate Sudfeld overthrows Jauan Jennings on a 20-yarder. Robert Nkemdiche recorded a sack on Jason Poe on the play.
20. Nate Sudfeld throws a 22-yard incompletion to Tyrion Davis-Price along the sideline. There was good coverage on the play by Marcelino McCrary-Ball.
Session 1 stats:
Trey Lance: 3/6
Nate Sudfeld: 2/7, 2 INT
Brock Purdy: 2/3
2nd Scrimmage Session
1. Trey Lance finds Jauan Jennings for a 10-yard pass. Nick Bosa recorded a sack on Lance's rollout prior to the pass.
2. Trey Lance throws a completion. Nick Bosa recorded a sack on Mike McGlinchey.
3. Trey Lance completes a 27-yard deep pass to George Kittle. Tarvarius Moore was in coverage.
4. Nate Sudfeld finds Brandon Aiyuk on the right side for a 17-yarder.
5. Nate Sudfeld hits Trey Sermon for a 7-yard pass. Sermon recorded 10 yards after the catch.
6. Brock Purdy finds Jordan Matthews for a 25-yarder. Leon O'Neal was in coverage. Purdy exhibited good pocket presence, but the ball took a while to reach the target.
7. Brock Purdy finds Ray-Ray McCloud on a 13-yard out-route.
8. Trey Lance throws a 50-yarder to Aiyuk, who makes a diving catch with Charvarius Ward in coverage. Ward had good coverage on the play, and Jimmie Ward was closing in, but Lance made an amazing throw for the completion.
9. Lance throws an incompletion to Ray-Ray McCloud on a 13-yarder. Emmanuel Moseley was in coverage.
10. Nate Sudfeld throws an interception to Tarvarius Moore on a 40-yard throw intended for Danny Gray. Deommodore Lenoir was in coverage, being step-in-step with Gray. Ambry Thomas held Malik Turner on the other side of the field during the play.
11. Nate Sudfeld avoided the pressure, but couldn't find a receiver, and took off for 5 yards. Ambry Thomas had great coverage on Danny Gray on the play, eliminating Sudfeld's option.
12. Trey Lance throws a 25-yarder to Brandon Aiyuk.
13. Trey Lance finds Jeff Wilson Jr. in the flat, who bobbles the well-delivered pass and is hit by Jimmie Ward while trying to recover and catch the pass. This was a drop by Wilson Jr.
14. Nate Sudfeld finds Tyler Kroft for 13 yards. Kemoko Turay recorded a pressure on George Kittle on the play.
15. Nate Sudfeld throws a 5-yard out to Tyler Kroft.
16. Nate Sudfeld finds Jeff Wilson Jr. over the middle for 8 yards.
17. Brock Purdy throws an incomplete 6-yard pass to JaMycal Hasty. There was a blitz by the defense on the play, and Purdy's throw was behind Hasty.
18. Brock Purdy hits Danny Gray, who makes a great 12-yard catch on a highly-contested play by Tariq Castro-Fields.
19. Trey Lance throws an interception over the middle right to Fred Warner on a pass intended for Ray-Ray McCloud. Lance didn't see Warner, and the pass was slightly behind McCloud, who was running a crosser from the left slot to the right side.
20. Trey Lance finishes practice with a 20-yard completion to Brandon Aiyuk. Dontae Johnson was in coverage.
Final QB Stats:
Trey Lance: 8/15, 1 INT, 2 dropped passes
Nate Sudfeld: 7/13, 3 INTs
Brock Purdy: 5/7
Written By:
Writer/Reporter for 49ers Webzone
All articles by Rohan Chakravarthi
@RohanChakrav
YouTube Channel
Rohan Chakravarthi
Writer/Reporter for 49ers Webzone
All articles by Rohan Chakravarthi
More San Francisco 49ers News
-
Recap: 49ers' second-half heroics stun defending champion Eagles for 23-19 Wild Card win
In what was a microcosm for their entire season, the San Francisco 49ers fought through more than their share of adversity against the Philadelphia Eagles on Sunday, including turnovers and significant injuries, while finding some unexpected heroes along the way to stun the... -
49ers' Ricky Pearsall reveals limitations due to lingering injury
San Francisco 49ers wide receiver Ricky Pearsall is listed as questionable for Saturday night's NFC playoff game against the Seattle Seahawks. Still, the receiver remains optimistic about his chances of returning after missing the last two contests. "Yeah, I'm pretty... -
Loss of George Kittle latest heartbreaker in 49ers' injury-plagued season
Just how much must San Francisco 49ers fans endure this season? The sight of All-Pro tight end George Kittle making a catch, going down near the sideline, and immediately grabbing his leg was the latest gut punch for the 49ers in what has been a brutal, injury-plagued 2025... -
49ers vs. Eagles injury updates: George Kittle suffers Achilles injury
The San Francisco 49ers are facing the Philadelphia Eagles at Lincoln Financial Field in a Wild Card playoff game. Below are the latest in-game injury updates for the 49ers. This article will be updated in real time as new information becomes available. Players are listed in...