Long time race leader Jules Cluzel (GMT94 Yamaha) held his nerve and his pace as the riders behind battled for the final podium positions at Chang, with the French rider winning by 0.939 seconds from Bardahl Yamaha team-mates Randy Krummenacher and Federico Caricasulo.
Krummenacher had been down in the middle order at the start of the race, working his way through to what looked an unlikely second place for much of the 17-lap race.
Caricasulo and Isaac Vinales (Kallio Racing Yamaha) had a fight for third at the end, with the Italian winning out.
Thomas Gradinger (Kallio Racing Yamaha) had to pull out of the race with a technical problem while he was in fourth place, but not before his bike had blown blue smoke out for some time.
Raffaele De Rosa (MV Agusta Reparto Corse) picked up fifth place after passing Hikari Okubo (Kawasaki Puccetti Racing) late on. The Japanese rider had been up to third at the beginning of the race, but dropped back as faster bikes passed him on the long straights.
Hector Barbera (Team Toth by Willirace) overtook struggling 2017 champion Lucas Mahias (Kawasaki Puccetti Racing) for seventh.
Loris Cresson (Kallio Racing Yamaha) headed off the challenge of top Honda runner Hannes Soomer (MPM WILSport Racedays Honda) to take ninth spot.
In the points standings after two rounds Krummenacher and Cluzel have 45 apiece, Caricasulo 32 and Barbera 22.