SANTA CLARA, Calif. - James Conner ran for two touchdowns and caught a 45-yard TD pass from backup quarterback Colt McCoy as the short-handed Arizona Cardinals beat the San Francisco 49ers 31-17 on Sunday.
The Cardinals (8-1) were playing without quarterback Kyler Murray and receivers DeAndre Hopkins and A.J. Green but still had little trouble completing the season sweep against the 49ers (3-5).
Conner scored on TD runs on back-to-back drives in the first quarter to stake the Cardinals to a big lead they never relinquished. Conner's long catch-and-run TD on Arizona's first drive of the second half helped put the game out of reach.
Conner finished with 173 yards from scrimmage and now leads the NFL in TDs with 11, all scored in the past seven games.
San Francisco lost a pair of fumbles in the first half and struggled defensively even against McCoy, a career backup who had won two starts in the past 10 seasons. McCoy went 22 for 26 for 249 yards.
The Niners are now winless in four home games this season and are just 1-8 at Levi's Stadium the past two seasons. San Francisco trails Arizona by four games in the NFC West and can afford few more slipups if the 49ers hope to make a wild-card push.
Jimmy Garoppolo played well, throwing for 326 yards and two touchdowns, but the Niners never got the running game established and were gashed on defense. Garoppolo threw a late interception to end any chance at a comeback.
A week after committing no turnovers, not punting and not allowing a sack in a win at Chicago, the Niners wasted little time doing all three against Arizona. Markus Golden had a third-down sack on the first drive, leading to a punt.
George Kittle then fumbled after a catch on the first play of the second drive. San Francisco punted again on the third drive and Brandon Aiyuk lost a fumble on the fourth drive.
The Cardinals set up their second TD with a trick play. Receiver Christian Kirk got the ball on an end-around and launched a deep pass that Antoine Wesley caught for a 33-yard gain to the 1. It was Kirk's first completion in college or the pros.
Conner ran it it on the next play to make it 14-0.
A play with unsportsmanlike conduct penalties on both teams ended up benefiting the Cardinals.
Coach Kliff Kingsbury came running on the field to argue a call after the Cardinals failed to convert on a third-and-long in San Francisco territory. The penalty could have knocked Arizona out of field-goal range, except Niners cornerback Josh Norman was called for taunting while the officials were discussing the first penalty.
The officials enforced the Norman penalty first and then the penalty on Kingsbury. That set the Cardinals up with a first-and-25 from the 26. Arizona settled for a field goal to take a 17-0 lead.
Cardinals: RB Chase Edmonds (ankle), LG Justin Pugh (calf) and TE David Wells (hand) all got hurt during the game.
49ers: RT Mike McGlinchey (knee) left with a knee injury.
Cardinals: Host Carolina next Sunday.
49ers: Host the Los Angeles Rams on Monday, Nov. 15.