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.
Benedict Cumberbatch's dramatic reading of R. Kelly lyrics is just what you need
Beyonce flaunts bikini body, Blue Ivy in vacation pics