"Adversity always happens in our position," McNabb said. "It's how you pull yourself out of it. I knew coming into this game if I just continued to be myself and know what I'm seeing out there and react, good things will happen."
Just four days ago, McNabb was benched for the first time in his career at halftime of a 36-7 loss at Baltimore. The Eagles only trailed 10-7 when coach Andy Reid decided to put Kolb in after McNabb threw five interceptions and lost two fumbles in his previous seven quarters.
But Reid gave McNabb another chance and the five-time Pro Bowl quarterback responded with his best game since Week 1. He completed 27 of 39 passes for 260 yards and a passer rating of 121.7. Kolb ran out the clock while McNabb celebrated the win on the sideline.
"He was very determined, he commanded the offense, he relaxed and played very well," Reid said. "He blocked everything out and went about his business. It's a credit to him and the kind of guy he is."
Westbrook, playing with a sore ankle and knee, had 110 yards rushing and 20 more receiving. He had two TDs on the ground and two receiving. Wideout Irving Fryar was the last Eagles player to score four TDs in 1996.
"We needed this game. It was a little vindication for my offensive line. We did a great job," Westbrook said.
The Eagles (6-5-1) desperately needed to win to maintain their slim playoff hopes.
They'll have a few extra days to prepare for the New York Giants (10-1) on Dec. 7.
The Cardinals (7-5) will clinch their first division title in 33 years if San Francisco loses at Buffalo on Sunday.
"It sure seemed like we came out flat," Arizona coach Ken Whisenhunt said. "I don't know if we were mentally prepared. We played hard, but obviously made too many mistakes. We weren't as crisp as we had been."
Kurt Warner had 235 yards passing, three TDs and three interceptions.
"It's not the game we wanted to play," Warner said. "I came out and forced one early. We just didn't have our game today and it was across the board."
Right from the start, McNabb looked like the guy who led the Eagles to four straight NFC championship games and one Super Bowl. He was 5-for-5 for 38 yards on the opening drive, capping it with a 5-yard TD pass to Westbrook. Whoever was calling the plays -- Reid or offensive coordinator Marty Mornhinweg -- finally mixed it up instead of relying heavily on the pass. The running backs carried six times during the 12-play drive.
"Anytime you get a good mix, the defense has to play both," Reid said.
When Kyle Eckel ran for a first down on third-and-1 to keep the drive going, fans gave the Eagles a standing ovation. That's because they had passed unsuccessfully on their four previous third-and-1 attempts over the past two games. Also, Kolb threw an interception on second down from inside the 1 that was returned an NFL-record 108 yards by Ed Reed.
Joselio Hanson, starting for the injured Asante Samuel, set up the next score with his first career interception and a 13-yard return to the Arizona 41. Warner's pass into tight coverage was tipped by Stewart Bradley. Westbrook ran four straight plays, scoring from the 1 to make it 14-0.
Quintin Mikell intercepted Warner on the next series, but the Eagles went three-and-out. They went right down the field on their following possession and Westbrook caught a 2-yard TD pass for a 21-0 lead. Hank Baskett made a diving catch for a 20-yard gain and DeSean Jackson had a 14-yard reception to set up the score.
Warner tossed a 1-yard TD pass to Larry Fitzgerald to cut it to 21-7 late in the second quarter. It was his 20th straight game with a TD pass, breaking Neil Lomax's franchise record.
Westbrook had a 9-yard TD run in the third quarter to put Philadelphia ahead 31-7. McNabb connected with Jackson for 24 yards on third-and-23 one play earlier.
- Eagles right guard Max Jean-Gilles, starting for the injured Shawn Andrews, will miss the rest of the season after breaking his right ankle. Nick Cole took his spot.
- The Eagles swept the NFC West, a feat they also accomplished in 2002.
- Westbrook passed Timmy Brown for first place on the club's career list with 27 TD catches by a running back.
- Eagles S Brian Dawkins made his 34th interception, tying the team record shared by Eric Allen and Bill Bradley.