San Francisco lost for the second time in their past four games after an 8-0 start, although their defeats have only been by a field goal to fellow title contenders Baltimore and Seattle Seahawks.
Green Bay Packers handed New York Giants an eighth consecutive loss with a 31-13 road win.
Packers quarterback Aaron Rodgers, coming off one of the worst games of his career, threw four touchdown passes as his NFC North leaders improved to 9-3.
Cincinnati Bengals earned their first win of the season as Andy Dalton returned to the starting line-up and threw for 243 yards and one touchdown in a 22-6 victory over visiting New York Jets.
The win ended the longest season-opening losing streak in franchise history for the Bengals (1-11) and ensured they would not join the 2008 Detroit Lions and 2017 Cleveland Browns as the only teams to go winless over a 16-game season.
After a slow start, quarterback Devlin “Duck” Hodges and Pittsburgh Steelers came to life to beat Cleveland Browns 20-13.
Quarterback Ryan Fitzpatrick threw for 365 yards and three touchdowns as Miami Dolphins scored 23 consecutive points to beat Philadelphia Eagles 37-31.
Elsewhere, Tennessee Titans won 31-17 at Indianapolis Colts, Tampa Bay Buccaneers overwhelmed Jacksonville Jaguars 28-11 and Washington Redskins trumped Carolina Panthers 29-21.