MARTINSVILLE, Va. -- Tony Stewart once got so frustrated with trying to go fast around Martinsville Speedway that he suggested it be turned into a bass fishing pond.
He would never allow it now.
Stewart won a paint-trading duel with Jimmie Johnson and overcame Hendrick Motorsports' frustrating dominance of NASCAR's smallest, trickiest track Sunday.
It was Stewart's second victory at Martinsville, where he has also won three poles, and where he led 530 of 1,000 laps a season ago without winning either race.
"The racing here has been awesome since they've done everything," he said, speaking of resurfacing and other improvements. "They could still fill it up once a year with water, we could put dirt on it once a year. Just let us still run two Cup races."
The race had all the typical beating and banging of a short-track event, but it ended with none of the top contenders feeling they'd been wronged like last week in Bristol.
Stewart and Johnson dueled nose-to-bumper and side-by-side for four laps beginning with 30 to go Sunday, bringing the 65,000 fans to their feet. After being rebuffed three times, Stewart finally banged his way around Johnson with 27 laps to go.
"I knew we were a little quicker than him," Stewart said. "There was no way he was going to give it away, so we were going to have to take it away. We didn't turn him around. We didn't spin him out. We just got the position that we were after."
Johnson said it's easy for the one who prevailed to pass off the contact as typical short-track racing, but he had no complaints about being nudged and overtaken.
"I just kind of used up my stuff there at the end," Johnson said.
The victory was the 25th for the defending and two-time series champion, and second at Martinsville. Stewart celebrated in what is becoming his trademark, climbing the fence near the flag stand and enjoying the moment as his fans joined in from the other side.
"I'm still too old and still too fat, but as long as those people keep cheering like they do when I get up there, I'm going to keep doing it for them," he said.
The victory was Stewart's first in 20 races.
"As good as we've run here the last two years, this one means a ton to us," he said. "We knew that we were going to be a contender this week and the anticipation of coming here -- this was one of the places after the last few weeks, I couldn't wait to get here because I knew we had a shot at winning this race."
He also survived two single-file restarts with Martinsville master Jeff Gordon right behind him, but got a good jump the second time when Gordon's Chevrolet wiggled coming out of Turn 2, and Stewart had clear sailing. He won by 1.083 seconds.
Gordon, who had won both races last season and four of the last six on NASCAR's smallest and tightest oval, finished second, followed by Hendrick Motorsports teammate Johnson, Dale Earnhardt Jr., and Kyle Busch, also of Hendrick.
"We have a pretty good handle on this place," Gordon said of the Hendrick teams, which all finished in the top 10. Brian Vickers, the fourth, came in eighth.
The race looked all day like it would come down to a battle between Stewart and Johnson, who combined to lead 483 of the 500 laps. But when Stewart started making his move on Johnson, Johnson's car was fading and he had no way to stave him off.
Once Gordon passed Johnson, he had one chance to challenge, and lost it.
The first late restart came with eight laps to go, but with Gordon right on Stewart's tail heading through the first and second turns, Matt Kenseth's car slammed into the wall behind them, bringing out the 16th caution and leading to a red flag.
After a delay of about 9 minutes, it restarted with three to go and the crowd rose expecting a classic finish to the bruising day of racing. It never developed as Gordon's car broke loose in the second turn and Stewart drove off for the victory.
"I thought we might have had something for him," Gordon said of the first restart. "The car just stuck so good through [turns] One and Two. I thought I was going to get a run on Tony down the back straightaway, but then the caution came out."
But had already been plenty of drama on the 0.526-mile oval.
Stewart and Johnson, who had dueled all day, were running nose to bumper with Johnson ahead after a restart with 57 laps to go. After nearly 20 laps of that, Stewart made a move to Johnson's inside heading into the first turn. Johnson held him off despite contact out of Turn 2, and the pair repeated it for four straight laps.
On the fourth, Stewart finally made the pass.
The race proved a triumph for Earnhardt, whose day began ominously when he got caught in a multicar crash on the second lap, sustaining front and rear damage. His crew tore crumpled sheet metal off the car without him losing a lap under caution.
And then he rallied, climbing to fourth before getting pinched low by Ryan Newman on the 316th laps, causing his car to spin. A pit stop dropped him to 18th.
Then he rallied again for the strong finish.
"That was a fun race," he said. "We beat on it pretty hard but it kept coming back. I knew we were putting on a good show and we just wanted to keep racing real hard."
Johnson regained the points lead by 59 over Mark Martin, who finished 13th. Kenseth dropped to third after coming in 24th, followed by Kasey Kahne and Busch.