KANSAS CITY, Mo. (AP) During pregame warmups, 49ers quarterback Jimmy Garoppolo wandered over to the spot near the 10-yard line in Arrowhead Stadium where last season came to a crashing end with a torn knee ligament.

"Once I did that," he said, "it was over with. Time to move on."

He did that quite well.

After a rusty preseason debut last week, Garoppolo was sharp and efficient in leading San Francisco to a 27-17 victory over the Chiefs on Saturday night. He was 14 of 20 for 188 yards and a touchdown while playing the entire first half, his nightmare Week 3 of last season becoming just a memory.

"Leading up to it and everything, enough people talked about it. I definitely thought about it," Garoppolo said. "But it's good to get it out of the way, I think is the best way to put it."

Garoppolo led the 49ers deep into Kansas City territory four times, throwing a nice TD pass to Matt Breida and getting two field goals from Robbie Gould. The other drive ended on a failed fourth down.

"Last week wasn't nearly as bad as it looked, but it definitely looked that bad live," 49ers coach Kyle Shanahan said. "Today, everyone was on the same page a little bit better, moved the chains a couple of times and just got into a rhythm and start playing football."

Chiefs star Patrick Mahomes was just as good, going 8 of 10 for 126 yards. The highlight for him was a 62-yard catch-and-run to Damien Williams, who made the defensive end covering him look foolish.

Mahomes was so sharp in what was likely his final tuneup before the regular season that the league MVP even completed his first incompletion - it was just caught out of bounds. His only other misfire was a drop by backup tight end Blake Bell before coach Andy Reid gave Mahomes a visor to wear.

"I just thought he'd had enough," Reid said. "They've had a lot of work, a lot of work in training camp. We practice fast and hard and we have some live periods where you tackle to the ground. We just felt like we were in a good place there."

Garoppolo kept his helmet on, leading a two-minute drill that gave the 49ers a go-ahead field goal.

They clung to that 13-10 halftime advantage until Chiefs backup quarterback Kyle Shurmur led a 13-play, 97-yard drive that took up most of the third quarter. Byron Pringle capped it with a short TD run as the second-year pro tries to make the Chiefs as an extra wide receiver.

Wilson finished with 45 yards rushing for the 49ers. Breida carried seven times for 44 yards. ... Mullens was 8 of 11 for 84 yards. ... Rookie WR Mecole Hardman had three catches for 40 yards for Kansas City. ... Chiefs DE Frank Clark had a sack of Garoppolo in the first half.

QUIET TIGHT ENDS

The 49ers' George Kittle broke Travis Kelce's season yardage record for tight ends within hours of him setting it during Week 17 last season. But neither dented the stat sheet Saturday night. Kittle didn't play due to a bothersome calf injury while Kelce did not have a catch for Kansas City.