One of the wildest finishes in the 47-year history of NASCAR's biggest race saw four lead changes in the last nine laps. Earnhardt, the defending champion, came from as far back as 30th to grab a late lead, only to watch four-time series champion Gordon pass him seconds before a caution flag waved with three laps to go.
The race went three laps beyond the scheduled 200-lap distance, with Gordon hanging on over two final laps of green-flag racing to beat Busch by two car-lengths.
"Oh, my goodness, what an amazing day," a jubilant Gordon said. "Three, baby!"
He is the fifth driver to win three or more Daytona 500s, joining Richard Petty (7), Cale Yarborough (4) and Bobby Allison and Dale Jarrett (3).
Tony Stewart (search) dominated the race for a second straight year, leading 107 laps, and was well on the way to his first 500 win before a rash of late caution flags triggered the furious finish.
Earnhardt, who struggled with handling through most of the race and had not led a lap, suddenly dove to the outside, just in front of Gordon and charged past Stewart to grab the top spot on the 197th lap.
"I was real, real happy," Earnhardt said. "I'm telling you, man, the car was way, way off. It was hard. It was amazing the difference between the car (at the end) and maybe 50 laps before then. I mean, it was really fast."
Fast enough to scare Gordon, but not fast enough to beat him.
"Let's not say I gave up, but I thought it was over," Gordon said. "I mean, he hadn't been anywhere all day long and all the sudden he came out of nowhere."
Gordon finally pulled alongside Earnhardt and nosed ahead just moments before the 10th yellow flag of the race froze the field.
On the restart on lap 202, Busch, the defending Nextel Cup champion, drove his Ford past Earnhardt and bore down on Gordon.
Behind the three leaders, things got really wild, with three- and four-wide racing and cars banging and bumping off each other to the finish.
Scott Riggs wound up fourth, followed by Jimmie Johnson, Mark Martin in his last Daytona 500 and the frustrated Stewart.
Unlike other races at Daytona since NASCAR began requiring the horsepower-sapping carburetor restrictor plates to slow the cars, most of the race was run with the field stretched out around the 21/2-mile banked oval.
The Monte Carlos of Stewart, Gordon and two-time Daytona winner Michael Waltrip, Earnhardt's teammate, led most of the laps and spent much of the day in single file.
But things began heating up on lap 183 when Greg Biffle and Riggs bumped in the middle of a pack and ignited a nine-car crash that sent Scott Wimmer barrel-rolling and then spinning several times on the nose of his car before landing on his wheels. Wimmer was not injured.
The race restarted on lap 188, but several cars banged together before even passing the flagstand, sparking an eight-car crash on the main straightaway.
NASCAR managed to get that mess cleared in time for a restart on lap 196, but there was yet another caution waving on lap 198 because of debris on the track.
In a nearly identical situation last spring at Talladega, a heavily partisan crowd angrily threw beer and soda cans and seat cushions onto the track after NASCAR said Gordon was ahead of Earnhardt when the caution came out near the end of the race. Gordon went on to win that race under caution.
That reaction prompted new NASCAR chairman Brian France to change the rule and allow a two-lap, green-flag sprint for the win when a caution comes out before the final scheduled lap.
The victory was the 70th for Gordon, who barely missed his fifth series title last year when he finished just 16 points behind Busch and eight behind Hendrick Motorsports teammate Johnson in the closest points race in NASCAR history.
"I didn't know what the week had in store for us," Gordon said. "I knew we had a good car. We hadn't shown everything. I knew over 500 miles, with that pit crew, that team, that hopefully some patience would pay off there at the end."