SANTA CLARA, Calif. — Kyle Shanahan pulled aside his star tight end and apologized to George Kittle for not getting him more opportunities in the second half to set an NFL record.
The coach even said sorry a second time.
Quarterback Nick Mullens placed the blame on himself after Kittle fell 4 yards short of Shannon Sharpe's NFL record by a tight end of 214 yards receiving.
Kittle still had a brilliant Sunday afternoon, making an 85-yard touchdown reception on the way to 210 yards receiving and becoming the 49ers' first tight end to reach the 1,000-yard milestone to lead San Francisco past the sluggish, injury-plagued Denver Broncos 20-14.
"Four yards, ahhh, it's all right," Kittle shrugged nonchalantly, unfazed by a near miss. "Next time. Just talk to Nick and Coach Shanahan, they'll figure it out."
Kittle's long TD reception on a pass from Mullens early in the second quarter put the Niners up 13-0 — "George flashed in my eyes," his QB said — and Denver (6-7) never found a groove in seeing its three-game winning streak snapped.
Kittle had all of his yards and seven receptions in the first half and was targeted just once after halftime. Again, no big deal.
"We won. That's about all that matters," Kittle said.
Broncos quarterback Case Keenum struggled to find any rhythm after the Broncos lost top wideout Emmanuel Sanders to a torn Achilles tendon in practice during the week.
Dante Pettis added a 1-yard touchdown reception just before halftime for the Niners (3-10).
But this was Kittle's sparkling afternoon from the very start. He has provided a major lift for an offense that dealt with the blow of losing starting quarterback Jimmy Garoppolo to a torn anterior cruciate ligament in his left knee in Week 3 at Kansas City.
"We had one blown coverage, and a couple where we just didn't cover him," Broncos coach Vance Joseph said.
Mullens connected on eight of his first 12 throws for 124 yards and wound up 20 of 33 for 332 yards and a 102.1 rating.
"George had one heck of a day, 4 yards short of the record. You can blame that on me, I guess," Mullens said.
Denver (6-7), which sought its first four-game winning streak since starting the 2016 season 4-0, fell behind 20-0 at halftime then managed two second-half touchdowns to make things interesting.
Phillip Lindsay ran for a 3-yard score in the third then Case Keenum hit DaeSean Hamilton on a 1-yard TD toss with 3:53 remaining. Keenum went 24 of 42 for 186 yards.
San Francisco ended a three-game skid. The 49ers had lost their previous two games by 18 and 27 points, including a 43-16 defeat at rival Seattle last week.
Denver's Von Miller sacked Mullens for a 9-yard loss late in the second quarter. Including the postseason, Miller's 103½ sacks matched the franchise record held by Simon Fletcher.
Meanwhile, linebacker Bradley Chubb had two more sacks for 12 on the season to break Miller's franchise rookie record of 11½ set in 2011.
The previous time any 49ers player had 1,000 yards was in 2014, when Anquan Boldin had 1,062 yards receiving and Frank Gore 1,106 yards rushing.
In addition, Kittle's 52-yard catch and run to end the first quarter moved him past Vernon Davis for the 49ers franchise record for yards receiving by a tight end in a season.
Kittle came in needing 73 yards to top Davis' mark of 965 yards set in 2009.
"It's an honor. ... He set the standard," Kittle said.
On San Francisco's nine-play opening scoring drive — capped by Robbie Gould's 40-yard field goal — Kittle made receptions of 31 and 5 yards.
Gould made a 29-yarder early in the second.
Niners left tackle Joe Staley celebrated a rare catch, the third of his 12-year career, late in the first half when he got his hands on a tipped pass by a defender for a 5-yard loss.
He will be fined for it, Shanahan insisted. Because of the chance of injury on such plays, trying for the ball isn't advised. Staley called it a "dumb decision," but explained it like this: "It's like telling me 'Hey, there's pizza here, don't have slice.' I'm going to have a slice."
"Joe refuses to believe he's an O-lineman," Shanahan said. "... It was not a smart play."
Broncos: Cornerback Isaac Yiadom suffered a shoulder injury. Wideout Courtland Sutton nursed a thigh injury.
49ers: Cornerback Ahkello Witherspoon was able to return after landing hard on his left ankle late in the game when he went down defending a pass on the sideline.
Broncos: Host Cleveland on Saturday.
49ers: Host Seattle on Sunday.