The Spaniard, who now leads the championship, eased away from Scott Redding in the early stages with a series of fastest laps and was able to control the race from there.
Redding appeared to launch a fightback just after the halfway stage of the race, but as soon as he took a few tenths out of the leader Rabat was able to respond and increase his lead again.
While Redding settled for a comfortable second place, the battle for the final podium spot provided some excitement in the closing stages of an otherwise quiet race at the front.
Pol Espargaro started closing on third placed Takaaki Nakagami around half distance, but his progress was halted when he got stuck behind Rafid Topan Sucipto as they were lapping him.
Nakagami used that break to set some quick laps while he didn't have to defend, but once Espargaro settled down again he closed the gap once more.
The Spaniard launched his first attack at the Dry Sack hairpin with three laps to go. Despite running wide he was able to hold the inside line for the following corner, but Nakagami then surprised him by taking the place back on the exit of that left hander.
Nakagami then made a mistake at Turn 3 on the following lap, costing him just enough time to allow Espargaro to pass him into Turn 4.
Behind them, Nicolas Terol had a quiet race to fifth after gaining two places at the start, while Xavier Simeon snatched sixth from Jordi Torres at the end.
Mika Kallio, who went into the race tied for second in the championship, crashed out as he tried to recover from qualifying only 15th.
The Finn was up to ninth by lap 15, but he fell at Dry Sack as he tried to take eighth place from Dominique Aegerter.