McLaughlin led from pole position, as team-mate Power slipped back to fourth on an alternate tyre strategy, and held off reigning champion Alex Palou by half a second to take his maiden IndyCar win.
Power fought back to finish third, ahead of Colton Herta and Romain Grosjean.
St Petersburg IndyCar race results
Pole-winner McLaughlin led the charge to the first corner and held off an attack from Herta, as Will Power dropped back to fourth, behind Rinus VeeKay, after getting sideways under power at the start on primary black tires – as opposed to almost everyone else on the alternate reds.
Romain Grosjean, who dropped back to sixth behind Marcus Ericsson, complained of front wing damage after making contact with Power at the first corner.
McLaughlin pulled out a 3s by lap 15 which stretched out to over 5s by lap 20. Behind him, Power passed VeeKay for third, who was the first of the leaders to hit a cliff in terms of tire grip.
Ericsson passed VeeKay at Turn 10 on lap 18, then Grosjean, Palou (who started 10th) and Rahal (who, like Power, started on blacks) all pounced on him too, before he bailed to the pits.
Power passed Herta, who was also now struggling on reds, for second at Turn 1 on lap 19 and began to carve into McLaughlin’s lead.
Rookie David Malukas caused the first caution on lap 25, when hit the wall at Turn 3.
The majority of the field pitted, with Power switching to reds and almost getting into the back of McLaughlin as they their pit boxes. Behind them, Ericsson hit Rahal into Grosjean – which led to a costly penalty for the Swede.
Alexander Rossi, who hadn’t stopped at all, led from Scott Dixon, who had stopped on lap 11. McLaughlin dropped to 13th, running ahead of Power, Palou, Herta, Ericsson, Rahal and Grosjean.
At the restart, Palou passed Power and Rahal got by Herta – the latter repassing him a couple of laps later. Herta then also moved by Power.
Rossi gave up the lead on lap 38, allowing Dixon to hit the front. He led until making his second stop just before half distance. VeeKay led for a while until making his second stop on lap 62.
Back in front, McLaughlin headed Palou by 0.7s, with Herta pitting on lap 64 (earlier than planned as they didn’t get all the fuel in last time) and McLaughlin a lap later. Palou was the last of the frontrunners to pit, but he wasn’t able to overcut McLaughlin for the lead.
Dixon took another turn out front until he pitted with 22 laps to go.
McLaughlin led Palou, who gained when team-mate Jimmie Johnson held up the leader, while Power passed VeeKay for third. A fuel-saving VeeKay slumped to sixth in the final laps, allowing Herta and Grosjean past in the closing moments.
St Petersburg IndyCar race fastest laps