McKinstry went 3 for 4 with a sacrifice fly and has reached base 19 times in the last seven games.
The Tigers trailed 3-2 going into the bottom of the seventh, but McKinstry tied the game with a one-out homer off Joe Kelly (1-3), and back-to-back doubles by Riley Greene and Spencer Torkelson gave Detroit a 4-3 lead.
"I was facing an old teammate in Joe, I got a good pitch and I drove it into the stands," said McKinstry, who played with Kelly with the Dodgers in 2020-21. "Our offense is really buzzing right now."
Torkelson took third on a wild pitch and Eric Haase punched a single over the drawn-in infield to make it 5-3.
"Joe has basically been unhittable for the last few weeks, but no one is perfect every day," White Sox manager Pedro Grifol said. "He didn't have his location today, but I'll be just as confident about giving him the ball tomorrow."
Zack Short hit a two-run homer to make it 7-3 in the eighth.
"That's a situation where we gave up three runs in the top of the inning, but we came right back got it back," Tigers manager A.J. Hinch said. "Obviously, there's some frustration, but (McKinstry) takes care of that with the homer and then we just did a really nice job of hitting in the last two innings."
Tigers starter Michael Lorenzen retired the first 17 batters before Romy Gonzalez lined a clean single up the middle with two out in the sixth.
"I've had a few games this year where my mistakes have ended up being home runs. Today my mistakes ended up being flyouts," Lorenzen said. "That's how I pitch. I'm going to attack the strike zone and trust my defense."
Chicago, though, went ahead in the seventh.
Lorenzen left with a 2-0 lead and two on and two out in the seventh. Jake Burger reached first on an error, loading the bases, and Gavin Sheets followed with a three-run double off Jason Foley.
"We got the first two guys on, but then we couldn't do anything with the next two," Grifol said. "But Burger hustles down the line and forces a bad throw and then Sheets has a great hit with two strikes against a good pitcher."
McKinstry tied the game with his solo homer off Kelly in the bottom of the inning. Greene and Torkelson followed with doubles.
Foley (3-1) got the win. Lorenzo gave up two hits and two runs, both unearned, in 6 2/3 innings.
The Tigers took the lead with two runs off White Sox starter Jesse Scholtens in the second.
With one out, Akil Baddoo doubled, held on Jonathan Schoop's infield single and scored on Andy Ibanez's RBI single. Scholtens walked Zack Short to load the bases, and McKinstry made it 2-0 with a sacrifice fly.
Scholtens allowed four hits and two runs in 4 2/3 innings.
White Sox: OF Eloy Jimenez (appendectomy) could return to the lineup as soon as Sunday. ... RP Liam Hendriks (cancer) threw live BP on Friday and could be activated next week.
Tigers: OF Kerry Carpenter (shoulder) went 0 for 3 as DH in his first rehab appearance for Triple-A Toledo on Friday. Carpenter has not yet returned to the outfield.
The teams finish their four-game series on Sunday, with Detroit ace Eduardo Rodriguez (4-4, 2.19) facing Chicago's Dylan Cease (3-3, 4.60). Cease is 10-1 with a 1.72 ERA in 13 career starts against the Tigers.