Pedrosa, som nästan slutade sporten i år på grund av en armskada, tog ledningen sju varv från slutet.
Rossis lagkamrat Yamaha och mästerskapets rival Jorge Lorenzo var tredje efter att ha lidit av däckproblem.
Rossi leder nu Lorenzo med 18 poäng i ställningarna med högst 75 tillgängliga från de tre sista rundorna.
Bara dessa två förare kan vinna titeln, vilket innebär Marc Marquez tvååriga regeringstid som världsmästare är över.
Pedrosa, vars karriär började i 125cc klassen 2001, hade inte vunnit en MotoGP race sedan den tjeckiska Grand Prix i augusti 2014 och missade tre av säsongens fyra första lopp efter armkirurgi.
"Jag kunde inte gå fort i början", sade 30-åringen. "Men i slutet var min takt snabbare och kunde vinna loppet. Jag är mycket lycklig."
Samtidigt, San Marino ryttare Alex de Angelis är i ett "kritiskt tillstånd" med blödning i hans hjärna, efter en krasch i praktiken på kvällen av loppet.
31-åringen är sederad på intensivvårdsavdelningen vid Dokkyo Medical University Hospital, med rasläkare Michele Zasa som uppger att en MRI-undersökning hade visat att han hade en hjärnblödning.
De Angelis, som tävlar om Team e-motion Iodaracing, också bröt fem kotor och två revben, och fick en liten fraktur på bröstbenet och vänster nyckelben.
Samtidigt, brittiska ryttare Danny Kent kantade närmare vinna Moto3 titeln genom att avsluta sjätte i sitt lopp, en plats framför huvud rivalen Enea Bastianini.
Kent leder nu italienaren med 56 poäng och tre lopp återstår.
Den 21-årige, från Chippenham, försöker bli den första brittiska världsmästaren sedan Barry Sheene 1977.
Spaniens Dani Pedrosa hävdade den 50: e Grand Prix seger i sin karriär med seger över mästerskapsledaren Valentino Rossi i japanska MotoGP.