SANTA CLARA, Calif. -- Vance Joseph isn't yet ready to declare a winner in the race to be Denver's starting quarterback between Paxton Lynch and Trevor Siemian.
If he is, the Broncos' head coach is keeping it to himself.
Lynch led three scoring drives in his bid for the job while Siemian, who started the preseason opener a week ago, came off the bench to throw a touchdown pass as the Broncos beat the San Francisco 49ers 33-14 on Saturday night.
"The time frame's not important," Joseph said. "What's important is we get it right. It could be this week, it could be next week."
On a night when Denver forced four turnovers in the first half, running C.J. Anderson got into the end zone and Brandon McManus kicked four field goals, the majority of focus was on the ongoing competition between the Broncos' two quarterbacks.
Despite a plea earlier this week from vice president of football operations John Elway that one of the two take control of the job, neither quarterback did much to separate himself from the other.
Lynch was 9 of 13 and showed good pocket presence by scrambling out of trouble a few times, but managed only 39 yards through the air in less than two quarters.
Denver's first-round draft pick a year ago, Lynch is trying not to get caught up in the situation.
"You can't compare your progress to somebody else's progress because when you're worried about the other guy getting better, you're wasting time not focused on yourself and making yourself better," Lynch said. "That's really what I've been doing."
Siemian put up more passing numbers (49) on his first drive and finished 8 of 11 for 93 yards. Afterward, the 2015 seventh-round pick said he feels he's done enough to be the starter.
"I think so," Siemian said. "I'm not the coach but I think so."
As good as their offense was, the Broncos' defense was better despite being without linebackers Von Miller and Brandon Marshall and cornerback T.J. Ward.
Denver converted the three turnovers - two fumble recoveries and an impressive interception by Chris Lewis-Harris, who wrestled the ball from 49ers wide receiver Marquise Goodwin as both men fell to the turf - into 13 points.
San Francisco's Brian Hoyer was 8 of 11 for 89 yards and an interception while garnering a 58.5 passer rating. Third-round draft pick C.J. Beathard passed for 110 yards and a touchdown in his attempt to beat out Matt Barkley for the backup job.
"That whole game was concerning," 49ers rookie coach Kyle Shanahan said. "Start off the first half with four turnovers. The penalties. Struggling to run the ball, too. It's really tough to win when you put your team in that situation."
Multiple scuffles broke out when the teams held joint practices earlier in the week, but the game was relatively tame in comparison. After San Francisco linebacker Dekoda Watson was called for unnecessary roughness on the opening drive, both squads settled down.
Broncos left tackle Garrett Boles had a forgettable first half. The 20th overall selection was whistled for three holding penalties and a false start in the first half. One of the holding calls negated a touchdown, while the false start came on third-and-1. Boles was born in nearby Walnut Creek, although he grew up in Utah.
San Francisco first-rounder Reuben Foster was mostly quiet, although the rookie linebacker showed good speed and range to bring down Anderson near the sidelines in the second quarter. Foster played despite suffering a sprain in his surgically repaired right shoulder during the practices with the Broncos.
The teams combined for 22 penalties for 176 yards, although it could have been much worse. During a punt return in the third quarter, five flags were thrown on the same play including four on the Broncos. When the dust settled, the penalties offset and the play was re-run. "It was sloppy," Joseph said.
Hoyer fumbled in the first quarter when the ball slipped out of his hand when the 49ers' quarterback was dropping back to pass. "My arm went forward and the ball didn't go with it," Hoyer said. "It's literally the worst feeling I've had as a quarterback."
Undrafted free agent Victor Bolden provided a late spark for the 49ers with a 104-yard kickoff return for touchdown.
This was the Broncos' first appearance at Levi's Stadium since beating Carolina in Super Bowl 50.
The 49ers teams captains - Watson, linebacker Elvis Dumervil, left guard Zane Beadles and running back Kapri Bibbs - all previously played for the Broncos.
Both teams were without several key players. San Francisco sat defensive lineman DeForest Buckner (ankle), left guard Joshua Garnett (knee) and cornerback Jimmie Ward (hamstring), while Denver was missing running backs Devontae Booker (wrist) and Jamaal Charles (knee) and wide receiver Emmanuel Sanders (shoulder).
More AP NFL coverage: http://www.pro32.ap.org and http://www.twitter.com/AP_NFL