Christian McCaffrey’s big first half carries NFC West-leading 49ers to 31-13 victory over Seahawks

SEATTLE, WASHINGTON - NOVEMBER 23: Christian McCaffrey #23 of the San Francisco 49ers runs with the ball during the first quarter against the Seattle Seahawks at Lumen Field on November 23, 2023 in Seattle, Washington. (Photo by Jane Gershovich/Getty

Christian McCaffrey rushed for 114 yards and two touchdowns in the first half, and the San Francisco 49ers built a 21-point lead by halftime in rolling to a 31-13 win over the Seattle Seahawks on Thursday night.

The 49ers (8-3) won their fourth straight against their division rivals and have a two-game lead in the NFC West over Seattle. San Francisco won its third in a row overall following a three-game losing streak and picked up its 10th consecutive victory against a division opponent.

McCaffrey was terrific, running through arm tackles and breaking off a handful of big plays. He rushed for touchdowns of 8 and 1 yards as the 49ers built a 24-3 halftime advantage.

Deebo Samuel ran for a 2-yard touchdown on San Francisco’s opening possession and Brock Purdy completed 15 of 20 passes in the first half.

Purdy threw an interception that was returned for a touchdown by Seattle’s Jordyn Brooks early in the third quarter, but avoided any other major miscues and put a capper on the victory with a 28-yard scoring pass to Brandon Aiyuk with 7:51 left that sent some Seahawks fans heading for the exits.

"Ice in his veins. He’s such a good player," McCaffrey said of Purdy. "He makes plays all over the field, and watching how consistent he is back in the huddle. He’s never too high. He’s never too low. Anytime he’s got the ball in his hands, if there is a play to be made he can make it."

Purdy finished 21 of 30 for 209 yards, and while he didn’t have the perfect passer rating he did last week against Tampa Bay, he outplayed the quarterback on the other side.

Seattle’s Geno Smith was playing banged up after leaving last Sunday’s loss to the Los Angeles Rams in the second half with an injury to his right arm, near his elbow. He’ll have more bumps and bruises after the 49ers got finished with him.

Smith was 18 of 27 for 180 yards. He was sacked six times, threw an interception in the first half and nearly had a few more throws picked off. The Seahawks’ first five possessions gained 15 total yards, and when Seattle tried to rally in the second half, Smith took a couple of untimely sacks.

"The first half of this game, we couldn’t get out of our own way enough," Seattle coach Pete Carroll said.

Smith also ran to argue with an official after there was no flag for defensive holding or pass interference on a throw intended for Jaxon Smith-Njigba in the end zone that would have given the Seahawks first-and-goal late in the third quarter. Seattle settled for a field goal and never threatened again.

Seattle’s last chance at a rally ended when Zach Charbonnet was stopped on fourth-and-1 at the San Francisco 21 with 4:14 remaining. The Seahawks (6-5) lost for the second time in five days and have dropped three of their last four.

Seattle has scored just three offensive touchdowns in the past four games and has only one in its last eight quarters.

San Francisco’s six sacks were spread around. Nick Bosa had two sacks to give him 7 1/2 for the season. Javon Hargrave had 1 1/2 sacks, while Tashaun Gipson and Arik Armstead each had one. Kevin Givens was also credited with a half-sack. The 49ers have 15 sacks in the past three games.

Seattle appeared to bench starting cornerback Riq Woolen in the first half, replacing him with Michael Jackson. Woolen was not announced as having an injury and remained in on special teams. Woolen missed on a couple of tackles early in the game.

Seattle right tackle Jason Peters left late in the first half with a shoulder stinger and was replaced by Stone Forsythe. Peters did not return.

San Francisco backup safety George Odum suffered a biceps injury and did not return.

49ers: At Philadelphia on Sunday, Dec. 3.

Seahawks: At Dallas next Thursday.