Danica Patrick finished eighth, the highest finish in history for a woman in the Daytona 500, but she was poised to finish higher.
As the field started the final lap, Johnson was leading Greg Biffle and Patrick was third. But as the cars made their final trip around the 2.5-mile Daytona International Speedway, several cars passed Patrick.
Another group of cars behind the leaders crashed on the final lap, but NASCAR did not throw the yellow flag and let Johnson and the others race to the checkered flag.
Patrick, who first made history by becoming the first woman to win a Sprint Cup Series pole, also led a few laps -– the first woman to do so at the Daytona 500.
Mark Martin finished third, reigning Sprint Cup champion Brad Keselowski was fourth and Ryan Newman took fifth. Biffle finished sixth.
Johnson, a five-time Sprint Cup Series champion, won his first Daytona 500 in 2006 but hadn't finished higher than 27th in the last six races. He became the 10th driver to win a second Daytona 500.
Defending Daytona 500 winner Matt Kenseth had dominated much of the race, and with about 50 laps left he was leading with Denny Hamlin and Kyle Busch –- his teammates at Joe Gibbs Racing –- running second and third.
But Kenseth and Busch suddenly had mechanical problems with their Toyotas within minutes of each other, knocking both out of the race.
Matt Kenseth, who ran more laps at the front than any driver and was leading a 1-2-3 running with Joe Gibbs Racing teammates Kyle Busch and Denny Hamlin, is out of the race with 50 laps to go in the Daytona 500 on Sunday afternoon.
The 2012 winner left the track after his car began smoking on Lap 149 of 200. Shortly after his pit crew checked the engine his car was pushed to the garage. Kenseth was attempting to be the first repeat winner since Sterling Martin in 1994-95.
A few laps later, Busch's car began smoking and he drove off the track at Daytona International Speedway.
"It's really unfortunate," Busch said during a television interview. "We were running 1-2-3 and it felt like we were dropping like flies. Something inside the motor broke that's not supposed to break. It's a little devastating when you're running 1-2-3 like that. Hopefully [Hamlin] can bring it home."
Hamlin continued to lead the field enterting the final 30 laps. Also contending are reigning Sprint Cup Series champion Brad Keselowski, Greg Biffle, pole-sitter Danica Patrick, front-row starter Jeff Gordon, Jimmie Johnson and Dale Earnhardt Jr.
A spinning Brad Keselowski triggered another multicar crash with 62 laps left in the Daytona 500. Carl Edwards, David Regan and Austin Dillon were among those also involved.
The crash happened behind the race’s front-runners, where defending winner Matt Kenseth was leading Denny Hamlin, Clint Bowyer and Kyle Busch.
Pole-sitter Danica Patrick, who led a few laps and has been competitive all day, was ninth.