ENGLEWOOD, Colo. -- Watching the 49ers-Broncos practices was a lot like viewing a tennis match. If you were situated between the two fields, you could watch the Broncos offense run a play against the 49ers defense on your right and then quickly catch a snap with the 49ers offense and Denver defense on the left and so on and so forth.
The sessions also included as much fighting as a tennis match. There may have been one instance Thursday during tempers 'warmed' during a one-on-one blocking drill between the 49ers' Brandon Thomas and Denver's Antonio Smith. But it never got close to fisticuffs, and that was the extent of the bad blood.
Bad play? There was a lot of that, and most of it occurred on the left-hand field where the 49ers offense was at work. "Today was sloppy, not a good practice for us offensively," tackle Joe Staley said after the session. "That's what training camp practices are for, and we'll get better."
One sequence of plays went like this:
* Colin Kaepernick nearly intercepted on a pass to Vernon Davis
* Bobbled exchange between Kaepernick and running back Kendall Hunter
* Bad shotgun snap from center Joe Looney to quarterback Blaine Gabbert
* Somebody steps on Gabbert's foot, leaving the quarterback hopping around after the play like he has hotfoot
The play after that, however, may have been the offensive highlight. Gabbert -- who doesn't go down-field too often -- lofted a perfectly thrown pass over the defense and into the arms of rookie DeAndrew White, who then outraced cornerback Kayvon Webster for what would have been a 45-, 50-yard touchdown.
On the other field, the highlight was a long throw down the sideline from Peyton Manning to wideout Cody Latimer. Cornerback Kenneth Acker had good position and was between Latimer and the ball as it arrived. He deflected the ball, which Latimer managed to grab as he fell out of bounds at around the 10-yard line.
The official next to the play, however, ruled it a completion, which drew howls from Acker and his defensive teammates. "I know you're a big Broncos fan!" linebacker NaVorro Bowman good-naturedly called out to the official. "Hey reporters, I know you saw that."
On the next play, Manning connected with receiver Demaryius Thomas on an eight-yard touchdown on a short slant against cornerback Shareece Wright. Thomas had several big catches on the day.
Safety Jimmie Ward, who was teamed with ex-high school teammate Jaquiski Tartt with the second-team defense, had an interception. So did Michael Wilhoite, who was seen running extra wind sprints after practice. Wilhoite and Bowman likely will start Saturday's game at inside linebacker.
Starting cornerback Tramaine Brock suffered a "tinge" of his hamstring and left practice. He is not expected to be out long. While he was gone, Wright and Acker manned the outside spots while Keith Reaser slipped inside to nickel cornerback.
With Ahmad Brooks gone, Aaron Lynch lined up at left outside linebacker while Corey Lemonier was on the right side. Rookies Eli Harold and Marcus Rush -- “Rush has been coming on,” Jim Tomsula said afterward -- were on the right and left side respectively with the second-team group.
Linebacker Nick Moody hurt his left knee during a punt-return drill. He watched the rest of practice from the sideline and afterward walked off under his own power. His injury also is not believed to be severe.
Fullback Bruce Miller was back after being excused from Wednesday's session while he dealt with a league-related matter in connection with his June no-contest plea to misdemeanor disturbing the peace.
Tomsula said the plan Saturday is like it usually is in a team's third preseason game: He plans to give the starters more playing time than in the first two games. Will running backs Hunter and Reggie Bush, who have been held out of the first two contests, play?
“I’m expecting that," Tomsula said. "But like we say, I’m going to reserve the right. Kendall out there the last two days has been really nice. And Reggie, obviously I’ve got Reggie on a different deal. So, but yes, we’re expecting that today. But, I do want to reserve the right to be able to change my mind on that and if I do, I’ll let you know right away."
Marcus Martin continued to play center with the first-string offense and rookie Ian Silberman was the starting right guard. Botched snaps, false starts, blown assignments and missed blocks were a theme throughout the afternoon with the offensive line.
During one-on-one blocking drills, right defensive end Quinton Dial pan-caked his opponent, rookie guard Dillon Day.
Thursday’s practice was the last one of training camp and thus the last one on 2015 open to reporters. There will be no TC19, etc., etc. (sad face).