Italian star Rossi finished 18th after tumbling off his bike on the 16th lap and losing the lead to Marquez, who was crowned world champion last month in Japan.
Nine-time world champion Rossi, second on the grid, looked to be heading for his first win in Malaysia since 2010 as he dominated the early stages.
However Marquez, who qualified in pole position but was hit with a six-place grid penalty for impeding another rider, slowly worked his way through the pack.The Spaniard reached second place and was slowly closing the gap on Rossi, 39, when the Italian fell off his bike as he leaned into a corner.
He got up and continued but by that point victory had already slipped out of his grasp.
Marquez, 25, was dominant in the final stages of the race and opened up a big gap to the rest of the field.
“The start was not perfect but then I started to take out the riders step-by-step,” said Marquez.
“I started to feel better and better, and I started to see I was catching (Rossi).”
Marquez also lost his pole position in the Grand Prix of the Americas in Texas in April and was dropped to fourth on the starting grid after being penalised for disturbing Maverick Vinales in qualifying.
He went on to win that race for the sixth consecutive time.
Ducati’s Andrea Dovizioso, the winner in Malaysia in 2016 and 2017, could only manage sixth but retains second place in the overall standings, with Rossi’s crash leaving the Italian in third with one race remaining.
The rain stayed away after organisers shifted the start of the MotoGP two hours earlier in a bid to avoid tropical downpours, which usually occur in the late afternoon in Malaysia.
The decision came after Saturday’s qualifying session was delayed by more than an hour due to heavy rain.
Humidity and tropical rain are a constant challenge for riders at the Sepang circuit. The 2016 and 2017 editions of
the MotoGP took place during heavy downpours.