"Somewhere in the second quarter we woke up and we played like the Cardinals," Arizona coach Ken Whisenhunt said, "and that was nice to see."
Warner threw four touchdown passes, his most in seven years. Two of his TDs went to Fitzgerald, who caught five passes for 130 yards.
"My team was relying on me and I knew I needed to step up and make some plays," Fitzgerald said. "We had been dragging for a couple of weeks and I wanted to just make sure I was accountable."
The Cardinals (9-7), who had been blown out twice since clinching the NFC West title, finished the regular season with a winning record for the first time in a decade and only the second time since 1984. They will play a first-round playoff game at home against Atlanta on Saturday (4:30 p.m., EST).
Fitzgerald, in a spectacular performance with teammate Anquan Boldin out with a shoulder injury, had touchdown catches of 5 and 38 yards. His 50-yard catch set up Arizona's first touchdown and changed the tone of the game.
"One of the reasons that we played well is because he kick-started us," Whisenhunt said.
Warner completed 19-of-30 for 263 yards and was intercepted once. His four touchdown passes gave him a franchise-record 30 for the season. Matt Leinart played the final quarter in relief of Warner and directed the team to a pair of field goals.
James, in his first extensive play since he was benched eight games into the season in favor of rookie Tim Hightower, carried 14 times for 100 yards for a team that ranked last in the NFL in rushing. His 35-yard run, the longest in his three seasons with the Cardinals, set up Neil Rackers' 23-yard field goal that put Arizona ahead 31-21 with 8:26 to play.
James, who had asked through his agent to be traded, said he was told Monday that he'd be starting.
"You just always want to go out and perform, you just want to go out and play," he said.
The 57th 100-yard game of James' career pushed him ahead of Franco Harris to 11th on the NFL career rushing list.
Whisenhunt wouldn't commit to James being the starter against the Falcons.
"I'm certainly not down on Tim Hightower," Whisenhunt said, "but we'll prepare for Atlanta and see what we feel is the best fit for us going forward."
Seneca Wallace completed 24-of-43 for 250 yards and two touchdown passes for the Seahawks. He was intercepted twice.
Arizona finished 6-0 against NFC West foes but had lost four of five overall going into Sunday's game.
"I just think we needed to get back to playing with energy and doing what we do," Warner said. "I think we did that to a large degree today, and it's something we can build on going into the playoffs."
Holmgren's team, ravaged by injuries throughout the season, beat the New York Jets in his final home game as coach a week ago, but there was no fond farewell this time. The coach, who is stepping down and vows to spend at least one year out of football, has a 174-122 career NFL record, 90-80 with Seattle.
He said he was too emotional to speak to the team after the game.
"I told them tomorrow during the meeting," he said, "because if I tried to do it now it would be ridiculous. They mean a lot to me, and the thing I'll miss the most is the players."
Steve Breaston caught five passes for 91 yards, the last a 7-yarder in the waning seconds, to join Fitzgerald and Boldin as 1,000-yard receivers. It marks the fifth time in NFL history that three teammates passed the 1,000-yard mark. Breaston had 999 before the late pass.
Fitzgerald's gorgeous 38-yard catch in the corner of the end zone put Arizona ahead for good 21-14 with 8:49 left in the third. After Seattle punted on its next possession, the Cardinals went 68 yards in nine plays, capped by Warner's 14-yard TD pass to Breaston, and it was 28-14.
Both teams committed turnovers on their first possessions of the game.
On the second play from scrimmage, Ralph Brown intercepted Wallace's pass at the Arizona 49, ending the Seattle quarterback's franchise-record string of 184 attempts without an interception.
- Arizona broke the franchise record for points in a season with 424, one more than the Cardinals scored in 1984.
- The previous Cardinals record for most TD passes in a season was 28 shared by Charley Johnson (1963) and Neil Lomax (1984).
- Seattle's Deon Grant dropped a potential interception with nothing but open field in front of him just before Rackers' first field goal.
- Seattle lost OT Kyle Williams to a concussion in the second half.
- James also gained 100 yards.