The Japanese set an unofficial lap record of 165.705 kph (102.97mph) on the final lap and, after swapping the lead with his Honda team-mate several times, swept past him on the second-last curve to win by seven- hundredths of a second.
Okada, who started from the second row of the grid behind Doohan on pole, had constantly pressured the Australian, who was chasing his 13th victory in this year's championship after breaking Giacomo Agostini's 25-year- old record of 11 wins in a season a fortnight ago.
The three-times world champion, who is already assured of a fourth title, briefly surrendered the lead to Okada on the last lap but retook it overtaking on the inside within sight of the chequered flag. But the Japanese rider immediately struck back and crossed the line 0.069 sec ahead of Doohan in a time of 43 min 22.010 sec.
Spaniard Alex Criville, who ran off the track with 10 laps to go, finished third in 43:33.001 on another Honda, just ahead of Japan's Nobuatsu Aoki.
Results, Digest, page 23