Jorge Martin eased to his second Moto3 win of the season to reclaim the championship lead in Texas, as main rival Aron Canet faded to eighth late in the 17-lap race.
Poleman Martin grabbed the advantage off the line and took the lead into the first corner, with Gresini teammate Fabio Di Giannantonio slotting into second from fifth on the grid.
Di Giannantonio moved ahead of Martin at the start of the second lap, though Sky VR46 rookie Dennis Foggia moved ahead of the pair at Turn 12 on the following tour.
The lead changed hands frequently for much of the race, with the Gresini duo, Foggia and Argentina race winner Marco Bezzecchi all taking turns at the front of the field, while the fight for the podium stretched back to 13th place at one stage.
With six laps to go, Martin passed Bezzecchi on the brakes at Turn 12 and began to break the pack, the Spaniard immediately opening out an advantage of half a second as Di Giannantonio moved into second.
Martin opened up his lead almost a second over the next two laps, the hard tyre-shod Gresini rider – one of only a handful of riders to run that tyre – pursued now by Enea Bastainini.
The Leopard rider managed to edged away from the chasing group, but Martin absorbed the pressure and cruised across the line to take a seven-point lead in the standings.
Bezzecchi survived a last corner dive from Di Giannantonio to secure the final podium place, while Andrea Migno – who was left in 22nd after getting caught up in an incident at the start – capitalised on Di Giannantonio's failed raid on third.
Philipp Oettl crossed the lin in sixth ahead of Jakub Kornfeil, while Canet slipped to eighth in the end as the grip faded from his soft option rear Dunlop.
Tatsuki Suzuki and Livio Loi, who came from 26th on the grid, completed the top 10, with the final points going to Ayumu Sasaki, Gabriel Rodrigo – who crashed at Turn 1 on the opening lap – Darryn Binder, front row starter John McPhee and Albert Arenas.
Early race leader Foggia plummeted to 16th in the closing laps, while Niccolo Antonelli, Marcos Ramirez, Nicolo Bulega, Adam Norrodin and Kaito Toba crashed out in the opening stages.