Veterans Stadium traditionally is one of the toughest places for a road team to play, but the Eagles (8-4) won on their home field for just the third time in seven tries.
The Eagles, however, are 5-0 on the road, enabling them to be the only winning team in the NFC East. Philadelphia is pursuing its first division title since 1988.
"We still have more losses than wins at home," Eagles defensive end Hugh Douglas said. "It's still something that we definitely have to work on."
McNabb, who quickly bounced back from a blindside hit by safety Rodney Harrison late in the first half, completed 22 of 44 passes for 221 yards with one interception. McNabb completed a one-yard touchdown pass to tight end Chad Lewis in the first quarter and an eight-yard toss to running back Duce Staley in the second.
"It was tough when (the hit) happened, but to get up and realize what happened really kind of wkoe everyone up in the second half," McNabb said. "I was fired up and ready to go."
What started out as a season of promise has turned into disaster for the Chargers (5-8), who lost their sixth straight game. San Diego is just 2-8 after winning its first three games.
Rookie LaDainian Tomlinson carried 19 times for 51 yards, becoming the first Charger to reach 1,000 yards since 1994. But Tomlinson committed one of four San Diego turnovers, a first-quarter fumble that was returned for a score by safety Brian Dawkins.
A bright spot for the Chargers was Jeff Graham, a former Eagle who caught five passes for 110 yard and two touchdowns, including one of a highlight-reel variety.
"I thought about (playing here) a little, but this is a different situation now," Graham said. "I just have to concentrate on what is going on with this team. We had a nice start and now we have to have a strong finish."
The day started in fine fashion for the Eagles, who easily moved 63 yards in six plays for a score on their first possession. McNabb completed passes of 28 yards to Staley and 31 yards to James Thrash, setting up the one-yard touchdown pass to Lewis. Thrash caught five passes for 74 yards.
Graham enabled the Chargers to tie the game at 7-7. With cornerback Troy Vincent looking away from the ball, Graham reached over his head and took hold of a short pass from Doug Flutie. Graham then turned and raced upfield for a 61-yard score.
But Tomlinson made a costly mistake three minutes later, losing control of a handoff without being touched. Dawkins returned the fumble 49 yards for a score to make it 14-7 after one quarter.
"Talking to (Dawkins) during the game, he said that he knew that we were going to run this play," Tomlinson said. "He blitzed hard and made a good play."
"I was just shouting 'Hallelujah," Dawkins said. "It's been a long time since I've been able to feel that I've made a big difference in a game."
Philadelphia made it a two-touchdown game when Staley made a one-handed catch in the end zone on a pass from McNabb. Staley gained just 21 yards on 15 carries, but caught five passes for 88 yards.
San Diego then moved 71 yards in 56 seconds with Flutie connecting on a 10-yard touchdown pass to Graham. Flutie was 20 of 44 for 307 yards, but was picked off twice. It was the seventh career 300-yard passing game for Flutie.
"We fought our tails off and they have a great defense," Flutie said. "They were flying around. They've got a helluva pass rush."
The only score of the second half was a 37-yard field goal by Philadelphia's David Akers in the fourth quarter. Akers has made his last 14 field goal attempts, breaking the Eagles record he set a year ago.
Steve Christie of the Chargers missed field goal attempts of 34 yards in the first half and 37 yards in the second.