The Cardinals had no problem moving down the field on their first possession. They have done nothing since.
The 49ers gained 20 total yards and punted on their first two possessions. They have three touchdowns since.
San Francisco now is rolling and rolling over Arizona 21-7.
The 49ers have 250 yards to the Cardinals’ 82. Arizona gained 56 yards on its game-opening touchdown drive and has only 26 on the four possessions since.
Still, the Cardinals had a chance to go into the half down by only one score.
On the final possession of the half, Jordan Hicks was called for defensive pass interference on Emmanuel Sanders on third down. The spot foul, a 5-yard penalty, gave the 49ers a new set of downs at the Arizona 10-yard line.
Tevin Coleman scored on the next play, but George Kittle was called for holding. It was the sixth touchdown the 49ers have had negated by a penalty this season. Deebo Samuel then dropped a 13-yard touchdown pass with no one around him on the next play.
The 49ers reached the 1-yard line on third down and let the clock run down to four seconds before calling timeout. They went for it, and the Cardinals stuffed running back Jeff Wilson for a loss on what would have been the final play of the half.
But Cardinals coach Kliff Kingsbury, who went for it on fourth down deep in his own end last week in a loss to the Saints, called a timeout before the snap.
The 49ers got another shot and Jimmy Garoppolo threw his third touchdown of the half, a 1-yarder to Sanders as time expired in the first half.
Garoppolo has completed 17 of 21 passes for 172 yards and the three scores for a 140.4 passer rating. Kittle has a 30-yard touchdown catch and Kendrick Bourne a 7-yard touchdown catch.
Matt Breida has six carries for 65 yards, and Sanders five catches for 74 yards and a score.
Kyler Murray is 7-for-13 for 46 yards but has taken two sacks for 31 yards, leaving the Cardinals with 15 net passing yards. Kenyan Drake has 10 carries for 70 yards and a touchdown in his Arizona debut.