The Cowboys defense stopped an early Seahawks drive on a three-and-out, and turned around for kicker Greg Zuerlein to boot a 43-yarder to strike first on the scoreboard.
Then, on the Seahawks' next drive, Russell Wilson threw a 43-yard touchdown pass to Tyler Lockett, making it 7-3.
Tony Pollard then missed a kickoff return, forcing the Cowboys to start at the 1. The Cowboys' next play was a run from Ezekiel Elliott, who was tackled for a safety, making it 9-3 Seattle.
Two drives later, Elliott scored on a short run after a drive that included a long pass to Amari Cooper. Zuerlein missed the field goal, tying it up at 9-9 with less than two minutes to go in the first quarter.
The rest of the first quarter was a wild ride. Wilson threw a bomb to DK Metcalf that was almost a touchdown but was broken up at the last second by Trevon Diggs, giving the Cowboys a touchback.
The Cowboys ended the quarter on a three-and-out.
Defensive penalties cost the Cowboys the quarter. Two straight pass interference penalties helped set the stage for a Seahawks touchdown with 6:53 left before halftime, making it 16-9 Seattle.
Cedrick Wilson Jr. scored on a touchdown pass from Dak Prescott, but Zuerlein missed the PAT, making it 16-15 Seattle.
With 36 seconds left to go before halftime, Prescott threw an interception to put a cap on a penalty-riddled second quarter. On the following drive, the Seahawks scored again, making it 23-15 Seattle.
The cowboys get the ball back after the half.
After a defensive turnover where Dak Prescott fumbled on a pass, Seattle scored another touchdown, making it 30-15 early in the third quarter.
A few drives later, the Prescott-Wilson connection worked again, and the PAT was good this time, putting the Cowboys on the board again but making it 30-22 Seattle.
Michale Gallup scored midway through the fourth, putting the Cowboys within two points of the Seahawks to make it 30-28.
After a series of failed pass attempts and penalties, Zuerlein hit a 42-yard field goal to put the Cowboys up 1, 31-30.
With less than two minutes left, DK Metcalf made up for his earlier mistake and scored on a pass from Wilson, putting Seattle back in the lead 36-31. They went for a two-point conversion and missed, but got another chance at it after a Dallas penalty. Seattle scored on the second attempt, putting them up 38-31.
After a quick drive full of passes, Dallas took its last timeout of the game after Prescott was sacked with 16 seconds left. Prescott avoided being sacked a second time, only to throw a pick with 6 seconds left.
The final score: 38-31 Seattle. Dallas is now 1-2 on the season.