Keselowski took the lead off a pit stop with 32 laps left and held off Justin Allgaier in the race that was delayed two hours because of light rain at the mile oval southwest of Phoenix.

"The weather kind of came to us with what we needed for how our car was handling," Keselowski said. "It was a solid team effort. I wasn't perfect today by any stretch of the imagination, but the car was really strong. Really, really good for about 50-60 laps. The last 20 laps it would fall off pretty good, but the guys made it count. I am really proud of them."

Keselowski was caught speeding in the Team Penske's No. 22 Ford during the caution period following a rain delay of 1 hour, 35 minutes. The 200-lap race was delayed again for 25 minutes just before the end of the first 45-lap segment.

Sent to back of the lead lap after the penalty, Keselowski worked his way through the field and took the lead from Christopher Bell after they emerged from the pits side-by-side after their final stops.

"Christopher was really strong in the long run and I thought he would be more than we could handle, but we got on pit road and got new tires on it and our car took back off," Keselowski said.

Keselowski has 37 Xfinity victories, also winning the 2014 fall race in Phoenix. The Cup driver has won his last two Xfinity starts, taking the Richmond event last year.

Allgaier, the pole-winner and defending race champion, won the first 45-lap stage.

"Justin (Allgaier) ran a great race," Keselowski said. "I honestly thought he outdrove me most of the day. He was really strong."

The Xfinity regular finished 0.530 seconds back.

"I needed Brad to make a mistake or have a problem for me to catch him," Allgaier said.

Kyle Busch was third. He took the second stage, holding the lead on a one-lap shootout after the second delay.

Bell was fourth, and Jamie McMurray took fifth in his first series start since 2013.