The San Francisco 49ers had their fourth training camp practice on Sunday, and there were two 11-on-11 sessions of practice in between the team drills and positional drills.



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:

Rohan Chakravarthi


Writer/Reporter for 49ers Webzone
All articles by Rohan Chakravarthi
@RohanChakrav
YouTube Channel


More San Francisco 49ers News