The Niners weren’t particularly sharp on offense in their home opener but got enough from McCaffrey and on big runs after the catch by Deebo Samuel and George Kittle to earn their second 3-0 start in 25 seasons.
The defense did the rest against the short-handed Giants (1-2), who fell behind by double digits at the half for the third time in three games this season.
With the running game hampered by the absence of injured star Saquon Barkley and the offensive line overmatched without left tackle Andrew Thomas and left guard Ben Bredeson, the Giants struggled to move the ball and finished with 150 yards of offense.
They managed two field goals in the first half and scored on Matt Breida’s eight-yard run on a third-quarter drive that needed just 15 yards thanks to two penalties on the Niners.
Daniel Jones was often on the run and couldn’t get anything going downfield. He went 22 for 32 for 137 yards and an interception.
Purdy threw for 310 yards with a nine-yard touchdown pass to rookie Ronnie Bell in the first half and a 27-yarder to Samuel in the fourth quarter to improve to 8-0 as a starter in the regular season. But he also avoided several potential turnovers and had much of his production on short passes that his receivers turned into long gains.
McCaffrey ran for 85 yards, added 34 more receiving and scored on a four-yard run that made it 17-3 late in the second quarter. That matched Jerry Rice’s franchise record with 12 straight games in the regular season or playoffs with a touchdown and is three shy of the NFL mark.