Chris Graythen | Getty Images

Brad Keselowski wins Coca-Cola 600 in overtime

A late caution set Brad Keselowski up for victory in NASCAR’s longest race — and set Chase Elliott up for a second straight crushing disappointment.

In Sunday night’s Coca-Cola 600, which went to overtime for the second time in its history, Keselowski surged ahead after a restart on Lap 404 and beat Jimmie Johnson to the finish line by .293 seconds to win a race that stretched to 607.5 miles, longest in NASCAR history. Johnson’s finish was disqualified after his No. 48 Hendrick Motorsports Chevrolet failed post-race inspection. 

Elliott led Keselowski’s No. 2 Team Penske Ford by 1.6 seconds before Elliott’s Hendrick Motorsports teammate, William Byron, spun with a flat tire as Elliott’s No. 9 Chevrolet approached the start-finish line to complete Lap 398 of a scheduled 400.

SHOP: Keselowski gear | RELATED: Race results | At-track photos 

Elliott pitted under the eighth caution, as eight drivers stayed out on old tires. Restarting 11th on Lap 404, Elliott charged to third in the two-lap overtime but could go no further (Johnson’s DQ’d left Elliott second in the final results, though). Last Wednesday, Elliott was running second with a chance to win at Darlington when a misjudgment by Kyle Busch sent him hard into the inside wall minutes before rain halted the race and made a winner of Denny Hamlin.

“I feel like I’ve thrown this race away a couple of times, and I thought we were going to lose it today,” said Keselowski, who surrendered the lead to Elliott on Lap 363 and watched Elliott gradually pull away. “I know we’ve lost it the way Chase lost it, and that really stinks, and today we finally won it that way (by staying out).

“It’s major. It’s the Coke 600. That only leaves one major for me, the Daytona 500. We’re checking ‘em off. We may not have been the fastest car today, but, whoa, did we grind this one out. The pit crew on the yellow before the last had a blazing stop to get us up front.”

Keselowski’s victory was his first NASCAR Cup Series triumph of the season, his second at Charlotte and 31st of his career. The win was Ford’s first in the Coca-Cola 600 since Mark Martin visited Victory Lane in 2002.

RELATED: Every Coca-Cola 600 winner | See all of Keselowski’s wins

Elliott found himself in a thankless position after Byron’s spin. Whether crew chief Alan Gustafson brought him to pit road or not for the overtime, cars behind him were certain to do the opposite.

“That’s got to be a joke,” Elliott said on his radio when the yellow came out for Byron’s spin.

“You just try to make the best decision you can,” Elliott said after the race. “Those guys are just going to do the opposite of whatever we do. That’s just a part of it. You make decisions and you live with them. It wasn’t the pit call — I think being on offense is fine.

“Like I said, those guys are going to do whatever’s the opposite of what you do.”

RELATED: Elliott reacts to late-race heartbreak

Rain interrupted the race on Lap 50, necessitating a red-flag period of one hour, eight minutes and 35 seconds for track drying. Starting from the pole after edging Johnson by .009 seconds during qualifying earlier in the day, Kurt Busch led the first 54 laps but lost the lead under caution for the rain and slipped back to 10th by the end of Stage 1.

Alex Bowman, on the other hand, grabbed the top spot with a two-tire stop under yellow on Lap 54 and won the first 100-lap stage under caution three laps after Clint Bowyer broke a lower control arm in the front suspension and rocketed into the outside wall in Turn 1.

The No. 14 Ford was billowing smoke when Bowyer climbed out, unharmed but frustrated.

“It knocked the wind out of me there,” Bowyer said. “I mean, we’re 100 laps into a 400-lap race, and to be out already — you talk about a helpless feeling. The guys worked really hard on the (car), but it just wasn’t meant to be. 

“We’ll get ready (the Alsco Uniforms 500 at Charlotte), and we’ll be back at it. I’m going to go somewhere and take this thing (Hans device) off and find somewhere where I can find a cold beer. I’m out of here.”

RELATED: Bowman, Logano take stage wins at Charlotte

Bowman dominated Stage 2, leading comfortably except for a cycle of green-flag pit stops midway through the 94-lap green-flag run to the halfway point. On Lap 203, the cars stopped in line on pit road in remembrance of the fallen heroes who have become such an integral part of the Memorial Day weekend race.

After pit stops, Bowman kept his advantage and led the first 23 laps of Stage 3, but Martin Truex Jr., the runner-up in the first and second stages, got past Bowman in traffic on Lap 224 and held the point through a cycle of green-flag stops.

But Truex lost the lead in the pits under caution for Matt Kenseth’s contact with the outside wall on Lap 276, when Joey Logano, Kevin Harvick and Chase Elliott stayed out on old tires. Uncomfortable with the feel of his car after a two-tire stop, Truex restarted fourth and fell back to fifth by the end of Stage 3, which Logano held on to win, with Bowman running second. 

Truex held the held early in the final stage but couldn’t get back to the front after the penultimate restart on Lap 353.

Ryan Blaney finished third, followed by Kyle Busch, Kevin Harvick, Truex and Kurt Busch. Tyler Reddick ran eighth and Christopher Bell ninth, the best finish of the season for the Sunoco Rookie of the Year contender. Chris Buescher rounded out the top 10.

Bowman led a race-high 164 laps, followed by Truex with 87. Keselowski was out front for 21 circuits.

Wednesday night’s Darlington Raceway winner, Denny Hamlin, had a major issue before the race started. On the pace laps, two blocks of tungsten ballast fell off the No. 11 Joe Gibbs Racing Toyota, forcing Hamlin to the pits to have the weight replaced. 

By the time Hamlin exited pit road, he was eight laps down, scored 40th. Additional post-race penalties are likely, given how serious an infraction NASCAR deems the failure to secure ballast.