Here's three things to watch from a Niners perspective in this matchup:
C.J. Beathard aims for backup role
Niners coach Kyle Shanahan said this week that rookie quarterback C.J. Beathard will come in first to replace starter Brian Hoyer. Last week, Matt Barkley got the first opportunity behind Hoyer, but true to the competition for the backup job, it's Beathard's turn.
In the process, Beathard will look to build on a solid first outing in which he led the 49ers to a comeback victory against the Chiefs with a pair of second-half touchdown passes. Depending on how drives go with the starters and how he fares, Beathard could play into the third quarter, according to Shanahan.
At this stage, it's fair to say Beathard is pushing Barkley hard for the backup job, and a strong outing this week against Denver's No. 2 defense would go a long way in helping the third-round draft pick climb the depth chart.
Beathard has impressed with his ability to grasp Shanahan's offense and execute it on the field. He made big strides from the first session of camp and seems to be getting better each day. Barkley will need to make the most of his reps as well to keep this competition going into the final two preseason contests.
Tight-end competition tightens up
One of the most interesting position battles in this camp has been at tight end. Rookie George Kittle and veteran Logan Paulsen have carved out roles for themselves, with Paulsen working as a primary blocker and Kittle filling the "move" tight end role with his versatility. Kittle sat out the Kansas City game because of injury but he looks poised to be involved against Denver.
The battle here actually picks up after that duo. Veterans Vance McDonald, Garrett Celek and Blake Bell are still jockeying for position, with McDonald receiving plaudits from general manager John Lynch for his blocking in the preseason opener. McDonald was on the trade block in the spring, but nothing materialized and now he's back in the mix for a spot on the roster. Celek and Bell quietly had good outings last week and Celek, in particular, might not be getting his due credit for a solid camp.
Meanwhile, undrafted rookie Cole Hikutini has had a few good moments in practice but also hasn't produced consistently throughout camp. He has some of the tools Shanahan has coveted at the position in the past but will need to do more to clinch a spot on the roster.
Solomon Thomas pushes for starting spot
Rookie defensive lineman Solomon Thomas played most of the preseason opener in Kansas City and had a solid night against the Chiefs' backups. Defensive coordinator Robert Saleh has said Thomas is starting to nip at the heels of Tank Carradine, who is currently ahead of Thomas at the "big" defensive-end spot on the depth chart.
The expectation remains that Thomas, like linebacker Reuben Foster, will nail down a starting job sooner than later, but he has remained on the second-team defense at end while working with the first group as an inside pass-rusher in nickel packages. Carradine has been a good fit at the big end spot and looks to have a good shot to wrap up a roster slot, but the question is how much longer he can hold off Thomas.
If Thomas puts together another strong outing this week, particularly from the end spot, the Niners will have to begin considering when the time is right to see him against an opponent's starting offense.