In a difficult year, Jeff Gordon needed this one.

Gordon held off Tony Stewart in a three-lap dash to win for the first time since May 1, and Stewart dominated early and took a 15-point lead over third-place finisher Jimmie Johnson in the Chase for the Nextel Cup on Sunday at Martinsville Speedway.

Gordon, a four-time champion who didn't qualify for the 10-race playoff and has finished in the top 10 just three times in 14 races, also won with a 26-year-old crew chief who has been on the job for only six weeks since the departure of Robbie Loomis.

"It's been a tough year and we certainly could use a win and today was just phenomenal," Gordon said, patting crew chief Steve Letarte. "That was a great call he made to stay out that one time -- that's really what won us the race."

The call came when the 13th caution flew on Lap 343 after a spin by Casey Mears.

Told to stay on the track, Gordon assumed the lead when he and five others didn't follow the other top contenders onto pit road. Also staying out were the Roush Racing trio of Greg Biffle, Mark Martin and Matt Kenseth. Stewart came off pit road seventh.

Stewart had dominated to that point, leading 283 of 343 laps, and he made quick work of the first six cars and seemed content to wait for Gordon to fade. Gordon was racing on tires more than 50 laps older than Stewart's, but pulled away.

Gordon had to hold the lead through three more restarts, as well as Stewart nudging Johnson aside to take second place, but won by .235 of a second.

"There was no catching Jeff," Stewart said. "He was just too strong to keep up with."

Gordon's 73rd career win gave him a sweep of the season's two races on the .526-mile speedway -- the oldest, shortest and tightest run in NASCAR's premier series.

As he did in April, Gordon said he was dedicating the win to 10 people killed a year ago when a Hendrick Motorsports plane crashed on the way to the track.

The runner-up finish was the second in a row for Stewart here. He led 247 laps in the spring before a tire came off with 70 laps to go. This time, he again dominated until the shadows grew longer, then wasn't as strong after his last two pit stops.

But his dominance did give him 10 bonus points -- five for leading a lap and five for leading the most in the race -- to take first place to himself with four races left.

He and Johnson came in tied for the lead in a very tight championship chase.

Greg Biffle, who was third to start the day, just 11 points behind, wound up 20th. Fourth-place Ryan Newman, who was 17 points back, ran 10th to grab third place.

Newman is now 63 points back, and Biffle fell to fourth, 83 off the pace. After a restart with 52 laps to go, Biffle was first in line and trying to get back on the lead lap. He made Gordon and Johnson work to get past him. Stewart was next in line, and Biffle gave him no quarter either, holding off Stewart for several laps.

Stewart finally passed him with 37 laps to go and had three chances to take a shot at the leaders, but needed 26 of those laps to get past Johnson and was finished.

The race was much tougher for Chase contenders Martin, Carl Edwards and Rusty Wallace, who started the day fifth, sixth and seventh in the points standings.

Martin finished 34th in a backup car, Edwards was 26th, one lap down, and Wallace was running fifth when he crashed on a restart with 19 laps to go. He finished 19th.

Edwards is fifth, 149 points back. Wallace is 166 back, Martin 170.

Jeff Gordon takes the checkered flag to win again at Martinsville Speedway.