SEATTLE – If only for a moment, the Vikings offense found a preseason spark against the vaunted Seahawks defense during a 20-13 exhibition loss Friday night.

With two throws, quarterback Sam Bradford doubled the first downs gained by the Vikings during last week's preseason opener in Buffalo.

Bradford found receiver Stefon Diggs twice on the opening possession, the most impressive of which didn't come without punishment. As Bradford was drilled by a Seahawks defensive lineman, he found a wide-open Diggs down the sideline for 39 yards — a welcomed burst after starters couldn't muster much production against the Bills.

That was one step forward. Then came the two steps back.

Tight end Kyle Rudolph was flagged for a false start. Left guard Nick Easton couldn't get in front of running back Dalvin Cook on a screen, causing an incompletion when Bradford couldn't find his target. Cook was then wrapped up for no gain before Bradford was flagged for a delay of game. A check-down pass on third-and-20 set up Marshall Koehn's 29-yard field goal.

"We did some things I thought better tonight. I thought we ran the football better, protected better,'' Vikings coach Mike Zimmer said. ''We had good drives early in the ballgame. But there was other areas that we didn't play very well.

''I didn't think defensively we played very well tonight. And we had a couple of miscues in the return game, which affected us. So we'll get back to work. But it was nice to see the offense doing some good things."

Cook did some good things, giving the Vikings a glimpse of what he can do on the second drive. The rookie gained 33 yards on three consecutive carries, ripping off gains of 15, 9 and 9 yards from three different holes created by a makeshift offensive line. The Vikings played without left tackle Riley Reiff (back) and left guard Alex Boone (undisclosed). Cook gained 40 rushing yards on seven carries and added a 10-yard catch on three targets.

A couple of Cook's gains came up the middle, where rookie center Pat Elflein and guards Nick Easton and Joe Berger looked like a formidable trio in limited snaps.

"Usually when [Cook] can squirt through there, we're all doing our job," Elflein said.

Bradford took a seat after he went 7-for-11 for 95 yards in three series.

The Seahawks didn't sputter out of the gate. Seattle's offense kept rolling at the start after a 48-point outing in their preseason opener. Quarterback Russell Wilson gave Seattle a 7-0 lead by targeting cornerbacks Terence Newman and Marcus Sherels down the field, capping an 11-play, 77-yard drive with a 1-yard end zone fade to receiver Kasen Williams.

The Vikings defense — down two injured starters in safety Andrew Sendejo and cornerback Trae Waynes — stiffened. But only after Seahawks receiver Doug Baldwin slipped past cornerback Mackensie Alexander for a 37-yard catch-and-run. Zimmer sat much of his starting defense after defensive end Danielle Hunter corralled Wilson for a third-down sack to stop Seattle's second series.

Wilson stayed in for a fourth series and threw a 22-yard touchdown pass to running back Mike Davis, who found daylight against the Vikings backup defenders.

"Early, they made a couple good catches and got us on a couple scrambles," Zimmer said. "The third downs were not good."

Rodney Adams, the Vikings' rookie fifth-round pick and returner candidate, fumbled the kickoff out of halftime at the 18-yard line.

A few plays later, ex-Vikings kicker Blair Walsh, who signed with Seattle this offseason, nailed a 52-yard field goal.

The Vikings' quarterback pecking order remained Bradford, Case Keenum and Taylor Heinicke.

Keenum took over after Bradford's night ended and played into the fourth quarter. He completed 12 of 18 passes for 70 yards, an efficient if lackluster outing. His lone scoring drive, capped by a 51-yard field goal from kicker Kai Forbath, benefited from a third-down offsides penalty by the Seahawks.

"I think he's played pretty good,'' Zimmer said of Keenum. ''We'll have to go continue to look. I don't think anything's decided yet. We've still got some more time to figure that out."

Heinicke entered with the third-string offense and threw an interception on his third throw. Heinicke's pass went just behind receiver Isaac Fruechte on a slant route. The batted ball was picked off by Seahawks safety Tedric Thompson.

Rookie tight end Bucky Hodges helped Heinicke rebound with a leaping 20-yard touchdown grab in the closing minutes.