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.
Pregnant Mila Kunis wins 'Best Villain' at MTV Movie Awards
'Happy' fan videos make Pharrell cry [VIDEO]