Just after race leader Kyle Busch elected to make his green-flag pit stop, a caution came out for a spin in Turn 3, locking in Johnson as the new leader and eventual Stage 2 winner.
Kevin Harvick was second, Joey Logano third, Martin Truex Jr. was fourth and Denny Hamlin completed the top-five.
Following the break between stages 1 and 2, many of the lead-lap cars elected to pit but Harvick stayed out and took over the lead.
When the race restarted on Lap 55, Harvick was followed by Hamlin, Ricky Stenhouse Jr., Ryan Newman and Johnson. Kyle Busch restarted in 10th.
One lap later, Kyle Busch had already moved up to fifth as Harvick continued to lead the way over Newman.
After 60 laps, Harvick held a 2.6-second lead over Hamlin as Kyle Busch had powered his way up to the third position. Newman dropped to fourth and Paul Menard ran fifth.
With 30 laps remaining in the second stage, Harvick held a small lead over a fast-approaching Kyle Busch as Hamlin ran in third.
There were reports of rain showers about 15 minutes out but the race would not be considered official until the first two stages were completed.
On Lap 73, Kyle Busch got around Harvick on the outside exiting Turn 3 to retake the lead as several teams were considering whether to make another green-flag pit stop for fuel and tires.
Harvick decided to make his green-flag stop on Lap 79, taking four new tires and fuel.
After 80 laps, Kyle Busch had moved out to a more than 2.6-second lead over Hamlin as Kyle Larson, who started the race from the rear of the field, had moved into third.
Hamlin elected to make his stop on Lap 82.
On Lap 84, Chase Elliott pounded the outside wall in Turn 3 to bring out a caution. “Blew a right-front tire,” Elliott said over his team radio.
Elliott’s No. 9 Chevrolet suffered extensive damage and he drove it directly to the garage, his race coming to an early end. It’s the second time this weekend Elliott had wrecked.
“Unfortunate, it’s been a really rough about a month,” he said. “Just a rough patch, hopefully we can get past it. Good news is we’re still in the summer months.”
Most of the lead-lap cars elected to pit but Kyle Busch remained on the track and continued to lead the way when the race returned to green on Lap 88. Brad Keselowski was the first car off pit road.
With 10 laps remaining in the second stage, Kyle Busch held a small advantage over Harvick with Hamlin in third.
On Lap 92, NASCAR displayed the caution as light rain began falling in the areas of Turn 2 and 3 around the track.
A handful of cars elected to pit but when the race returned to green on Lap 95, Kyle Busch remained in the lead followed by Harvick and Hamlin.
Kyle Busch got out to a solid advantage after the restart as Johnson powered into the second position.
Kyle Busch elected to pit with two laps remaining, handing the race lead to Johnson. Just after that, Ryan Blaney spun in Turn 3 after contact with Daniel Suarez to bring out a caution.
There was not enough laps to restart the stage.