Ted Ginn had two long kick returns, Brian Westbrook scored on an 8-yard run in place of Frank Gore, and the San Francisco 49ers overpowered the struggling Arizona Cardinals for a 24-6 lead after three quarters on Monday night.
Arizona couldn't stop Westbrook, allowing him to get 103 yards on 17 carries for his first 100-yard game in two years.
San Francisco ran over Arizona early, using its running game and Ginn's returns to score its most first-half points in more than two years.
The 49ers had two drives stall in the third quarter, leading to a blocked field goal and one made from 38 yards by Shane Andrus.
It didn't matter the way the defense was playing. San Francisco held the Cardinals to 23 yards in the quarter and Takeo Spikes had an interception.
Michael Crabtree opened the scoring with a diving 38-yard touchdown catch from Troy Smith, one play after the 49ers recovered a botched handoff attempt - Arizona's 27th turnover of the season - between Derek Anderson and Beanie Wells on the Cardinals' first play from scrimmage.
Arizona cut into the lead on Jay Feely's 31-yard field goal, but Ginn returned the kickoff 41 yards to near midfield, setting up a 1-yard touchdown dive by Anthony Dixon.
Ginn later returned a punt 42 yards, setting up Westbrook's power run up the middle that made it 21-3 and set off a round of boos inside the University of Phoenix Stadium.
San Francisco played most of the first half without Gore.
He opened the game with a 25-yard run up the middle and had a 15-yard gain on 3rd-and-long six plays later, but went out with a hip injury later in the drive. Gore returned for two plays on the next series, but spent the rest of the half on the sideline without his helmet and didn't return in the second.
Feely cut it to 21-6 with a 39-yard field goal and Arizona got the ball late after Michael Adams had an interception that went through Crabtree's hands, but the Cardinals couldn't capitalize.
Arizona had just 116 yards to San Francisco's 213 in the first half, and it got even worse in the second.
LaRod Stephens-Howling returned the second-half kickoff 83 yards, only to have it called back on a penalty. Anderson, ineffective all night, threw an interception on Arizona's final play of the third quarter.
This was a matchup of two 3-7 rivals somehow still in a playoff race.
They were supposed to be the division favorites.
Arizona, the two-time defending NFC West champions, went to its first Super Bowl two years ago and was hoping to get back.
The Cardinals instead turned inconsistent, bad on defense, even worse on offense.
Trying to find stability after Kurt Warner's retirement, Arizona coach Ken Whisenhunt has flip-flopped quarterbacks, opening with Anderson, switching to rookie Max Hall, then back to Anderson.
None of it has worked.
The Cardinals had lost five straight and their last game at home, an 18-point loss to the Seahawks, was punctuated by boos from the fans, many of whom decided not to stick around until the end.
San Francisco was expected to make its big leap under coach Mike Singletary this season and challenge the Cardinals for the division title.
That didn't happen, either.
The 49ers opened the season 0-5 and had a bit of quarterback shuffling of their own, sticking with Troy Smith even though Alex Smith is now healthy.
San Francisco showed a brief spark by winning three of four, but is coming off its first home shutout since 1977, a 21-0 loss to Tampa Bay last week.
Despite their records, both are still in contention for the division title.
That's because the NFC West has become the NFL's worst, a collection of sub-.500 teams battling to see who will take the title.
St. Louis, the standard-bearer for futility with six combined wins the previous three seasons, is tied with another muddling-in-mediocrity team, Seattle, atop the division at 5-6.