SEATTLE — Russell Wilson and Marshawn Lynch had all the answers for Adrian Peterson and the Minnesota Vikings.

Lynch ran for 124 yards and a touchdown, Wilson threw three first-half touchdown passes, and the Seattle Seahawks overcame 182 yards by Peterson in a 30-20 win over the Vikings on Sunday.

The matchup between the top two rushers in the NFL — Peterson and Lynch — didn’t disappoint with Peterson having his best game since 2008.

But the difference was Wilson, Seattle’s rookie QB who continues to improve. He did just what the Seahawks (5-4) needed, hitting key passes and not making any mistakes.

Wilson threw touchdown passes of 11 yards to Sidney Rice and a pair to Golden Tate. The first to Tate came on a 6-yard throw in the first quarter.

On the second, Tate took a short screen pass, danced away from a couple of defenders near the line of scrimmage, then jumped over Minnesota cornerback Josh Robinson at the goal line, just getting the ball over the line before it was knocked loose by Everson Griffen.

The second of Tate’s touchdowns gave Seattle a 20-17 lead at halftime. Then it was time for Lynch, who spent most of the first half watching Peterson sprint through the Seahawks defense.

Lynch had a 3-yard TD run in the third quarter to give Seattle a 10-point lead. He ran for 69 yards in the second half and added two receptions that included a key 24-yard screen pass that led to Steven Hauschka’s 40-yard field goal with 6:23 left and a 30-20 Seattle lead.

The Seahawks then capped the game by running the final 5:27 off the clock converting two fourth downs as Seattle snapped a two-game losing streak.

Wilson finished 16 of 24 for 173 yards. Rice and Tate both had four catches, but Wilson connected with eight different receivers.

Seattle won despite Peterson. It was his third straight game over 100 yards rushing and he nearly reached the century mark by the end of the first quarter.

But the Vikings (5-4) went away from their star in the second half, who continues his recovery from a torn ACL suffered late last season. Peterson had just five carries for 38 yards in the second half, yet still had his best game since running for 192 yards against Green Bay on Nov. 9, 2008.

Christian Ponder was 11 of 22 for just 63 yards, was sacked four times and threw an interception in the fourth quarter.

Peterson’s big day started early as he went 74 yards on the second play of the game, only to be caught at the 1-yard line by Brandon Browner. Peterson scored two plays later, the first time this season the Seahawks did not score first.

Peterson’s 144 yards at halftime were the most in his career in the first half. The Vikings had six rushes of more than 10 yards in the first half.

And still, despite rolling up the yards, the Vikings went to halftime trailing 20-17 because they couldn’t slow Wilson.

He completed 10 of 14 in the first half.

Even Rice, the former Viking, got in on the action with a 25-yard completion to Zach Miller. That pass set up Rice’s 11-yard TD reception when Wilson bought time in the pocket and found his receiver cutting across the back of the end zone.

Peterson answered with his second touchdown of the first half on a 4-yard run early in the second quarter and Minnesota took a 17-14 lead on Blair Walsh’s 34-yard field goal.

But Wilson answered with a 12-play, 80-yard drive to end the first half that was capped by Tate’s leap.