Marini won the start while Oliveira and Bagnaia took up second and third.
The championship protagonists battled until Oliveira made what would prove to be the decisive move on Lap 7, and the Red Bull KTM Ajo rider set about erasing the 0.9s deficit to Marini.
He made it a contest, and they even temporarily swapped positions when Marini commited an error, but the Italian responded and took his maiden grand prix win.
Compatriot Bagnaia, who will be Jack Miller's team-mate at Pramac next year, put the championship to bed with a podium finish on his Kalex.
Remy Gardner (Tech3 Racing) was fifth when he crashed and ultimately did not finish.
Jorge Martin clinched Moto3 honours for 2018 with the win at Sepang despite falling as far back as 10th in the running order.
Marco Bezzecchi, the main man who stood in his way of the championship, led the early laps before Martin recovered and Aron Canet (Estrella Galicia 0,0 Honda) bought in to create a three-way battle for top spot.
Bezzecchi fluctuated within the top six for the laps which remained and ultimately came home fifth on his Redox PruestelGP KTM, one position short of keeping the title fight alive.
Canet was a non-finisher after crashing out of the lead on Lap 11.
The final Moto2 and Moto3 races of the season are at Valencia on November 16-18.
Asia Talent Cup
Australian Billy Van Eerde also won a championship at Sepang as he sealed the 2018 Idemitsu Asia Talent Cup, a junior series which runs as a support category predominantly to MotoGP and World Superbikes in the region.
The final race of the year ended on controversial fashion as Japanese rider Haruki Noguchi took the chequered flag in the lead, but after making contact on the last lap with Danial Sharil which saw the Malaysian go down.
Officials issued a 27-second penalty which saw Van Eerde win the race, just 0.064s ahead of Thai Tachakorn Buarsi.
The 16-year-old had given Noguchi a break when he fell in the first race of the weekend and finished only 11th, before the decisive Race 2 penalty.
Fellow Australians Senna Agius and Benjamin Baker finished the season 17th and 22nd respectively.