Johnson took the lead just before the race's final caution then fended off Hendrick Motorsports teammate Earnhardt to eke out a 0.129-second margin of victory.
Johnson, who previously took NASCAR's signature season-opening event in 2006, became the 10th driver to win the event at least twice.
Ryan Newman rounded out the Top 5.
Pole-sitter Danica Patrick finished eighth -- the highest-ever placing by a female driver at the Daytona 500.
Ray Liotta sues skin care company over use of likeness
NBC reportedly holds celebs hostage to Jimmy Fallon's show