Marc Marquez extended his MotoGP championship lead to 43 points with three races remaining after finishing second to Dani Pedrosa in Malaysia.
Honda's Pedrosa climbed from fifth on the grid to win at Sepang for a second straight year and move 11 points behind second-placed Jorge Lorenzo overall.
Marquez and Lorenzo had a thrilling duel, with Marquez taking second after passing his rival with 11 laps left.
And that means the 20-year-old can win the title in Australia next weekend.
With 75 points still available this season, only the top three in the standings remain in title contention.
But Marquez, last year's Moto2 champion, is heavy favourite to win the premier class in his first season.
Despite qualifying on pole at Sepang, the Spaniard saw countryman Lorenzo take the lead at the start but the Yamaha rider was passed by Pedrosa on lap five.
That led to a battle between Marquez, Pedrosa's Honda team-mate, and Lorenzo for second.
It was the buccaneering championship leader who prevailed, squeezing past reigning champion Lorenzo on the inside and forcing him to the outer limits of the track as the two machines made slight contact.
With Pedrosa comfortably ahead, Marquez was content with second, telling BBC Sport: "It was quite hard and it was too much risk to try and catch Dani."
Pedrosa, who secured his 25th MotoGP victory and third of the season, said: "The conditions were extremely hot. On the grid I was already super-warm and I knew riding would be a lot tougher."
Cal Crutchlow finished sixth, one place ahead of fellow Briton - and Tech 3 Yamaha team-mate - Bradley Smith.
Crutchlow had a tussle with the Honda of Spaniard Alvaro Bautista, passing him with four laps remaining before being overhauled on the final straight.
Malaysian MotoGP result:
1. Dani Pedrosa (Spa) Repsol Honda 40 minutes 45.191 seconds
2. Marc Marquez (Spa) Repsol Honda 40:47.948
3. Jorge Lorenzo (Spa) Yamaha 40:51.860
4. Valentino Rossi (Ita) Yamaha 40:55.542
5. Alvaro Bautista (Spa) Honda Gresini 41:07.340
6. Cal Crutchlow (GB) Tech 3 Yamaha 41:07.492
7. Bradley Smith (GB) Tech 3 Yamaha 41:16.055
8. Andrea Dovizioso (Ita) Ducati 41:30.302
9. Aleix Espargaro (Spa) Aspar 41:44.455
10. Yonny Hernandez (Col) Pramac 41:46.608
MotoGP standings after 15 of 18 races:
1. Marc Marquez (Spain) Honda 298
2. Jorge Lorenzo (Spain) Yamaha 255
3. Dani Pedrosa (Spain) Honda 244
4. Valentino Rossi (Italy) Yamaha 198
5. Cal Crutchlow (Britain) Yamaha 166
6. Alvaro Bautista (Spain) Honda 136
7. Stefan Bradl (Germany) Honda 135
8. Andrea Dovizioso (Italy) Ducati 120
9. Nicky Hayden (U.S.) Ducati 102
10. Bradley Smith (Britain) Yamaha 89