SEATTLE -- The Seattle Seahawks needed 7 1/2 quarters to put together their first touchdown drive of the season.
However, it was the drive that followed, the one that didn't result in points, that mattered most on Sunday afternoon.
Russell Wilson's 9-yard touchdown pass to Paul Richardson with just over seven minutes remaining in the fourth quarter, Seattle's first touchdown of the season, gave the Seahawks their first lead of the second half, then the offense milked the final 4:47 to hold on for a 12-9 win over the San Francisco 49ers at CenturyLink Field.
Wilson overcame a poor passing performance on a rainy afternoon to put together a 10-play, 82-yard drive that included several scrambles for first downs before he threw the go-ahead touchdown pass to Richardson with 7:06 remaining.
"Russell was very resourceful today," Seahawks coach Pete Carroll said. "Maybe not as sharp because the balls were (dropped). But when we needed it, he came through in great fashion."
After the touchdown and a botched extra-point attempt by kicker Blair Walsh, Seattle's defense stopped San Francisco (0-2) on three downs on the 49ers' next possession, then the Seahawks (1-1) finished off the game with a seven-play drive -- all runs -- that ran the final 4:47 off the clock.
"We were hoping to get another chance at the end," 49ers coach Kyle Shanahan said, "but they did a good job with their four-minute offense. And that was disappointing."
San Francisco's final offensive drive lasted only three plays because Seattle linebacker K.J. Wright dragged down San Francisco's Garrett Celek 3 yards short of the first down with five minutes left. The Seahawks ran out the final 4:47 after taking possession at the other end.
"It was wet and sloppy all day, and we found a way to stay composed and get some first downs," Wilson said. "What we were able to do in those last four minutes and to get some first downs, that was huge. ... If you're going to be a championship team, you've got to be able to do that."
Wilson completed 23 of 39 passes for 198 yards and a touchdown while adding 34 yards on 12 carries. Rookie running back Chris Carson rushed for 93 yards on 20 carries while accounting for 41 yards on Seattle's final drive.
The Seahawks avoided their first loss in a home opener since 2008 despite giving up 124 rushing yards to San Francisco running back Carlos Hyde. The 49ers gained 159 yards on the ground but only 89 passing yards in the loss.
Seahawks cornerback Richard Sherman said he was proud of the way his defense played while allowing just 248 yards of total offense.
"We've got a lot of highly paid guys on our side of the ball, and there's a certain level that's expected," Sherman said. "We expect that no matter what's going on the other side of the ball."
San Francisco quarterback Brian Hoyer completed 15 of 27 passes for 99 yards and an interception. He was sacked twice for losses of 10 yards.
"He struggled," Shanahan said. "Our whole passing game did."
The 49ers used a 10-play, 54-yard drive to set up the go-ahead field goal early in the fourth quarter. Robbie Gould's third field goal of the day, from 34 yards out, put San Francisco ahead 9-6 with 11:36 remaining.
Four field goals sent the teams into the halftime locker room deadlocked 6-6.
Blair Walsh kicked field goals on two of the Seahawks' first three possessions, with help from a Bobby Wagner interception, as Seattle jumped out to a 6-0 lead after one quarter.
San Francisco got 98 rushing yards from Hyde in the second quarter alone to set up two Gould field goals that tied the score. Gould's 37-yarder with 17 seconds left set up by a Hyde 27-yard run, which evened the game at 6-6.
Hyde had 102 rushing yards on seven carries in the first half.
Seattle has now beaten San Francisco in seven consecutive meetings.
NOTES: Seahawks RB Eddie Lacy was inactive for the game. The former Green Bay Packer has fallen behind Thomas Rawls, C.J. Prosise and undrafted rookie Chris Carson on the depth chart. ... Rookie LB Reuben Foster, a first-round pick, was among the 49ers' inactives due to an ankle injury. ... San Francisco benched G Zane Beadles and replaced him with recent trade acquisition Laken Tomlinson in the starting offense. ... Seattle CB Richard Sherman, who missed two practice days due to a sore hamstring, made his 93rd consecutive regular-season start. ... San Francisco S Jimmie Ward and Seattle RB Thomas Rawls made their season debuts after missing the opener with injuries. ... San Francisco S Eric Reid continues to battle a knee injury that led to him being helped off the field twice Sunday.