Pak Nam-chol headed the winner in the 50th minute, and the final whistle sparked wild celebrations at Pyongyang's Kim Il-sung stadium despite the fact North Korea had already been eliminated.
"We didn't do anything right for 90 minutes," Japan defender Yasuyuki Konno said. "They dominated us. We were pathetic."
Under the gaze of a giant portrait of North Korea's 'Eternal President' Kim, Japan's national anthem was drowned out by boos before a fractious Group C match.
Matches between the two invariably take place against a backdrop of political tensions over World War II, North Korea's nuclear ambitions and the kidnapping of Japanese citizens.
Japanese nationals are normally asked to refrain from travelling to the secretive communist state after sanctions were imposed following North Korea's missile launch in 2006.
Japan's players had received a typically frosty welcome on landing at Pyongyang on Monday. They were detained at customs for four hours while airport officials combed through their luggage.
Although a dead rubber, tempers frayed after Pak's goal with Jong Il-gwan being sent off for a second bookable offence in the 77th minute after a nasty tackle on Atsuto Uchida.
Asian champions Japan, who have 10 points from five matches, lost for the first time in 17 games under Italian coach Alberto Zaccheroni.
"They were very physical and made it very difficult," the Italian said. "North Korea had failed to qualify for the last round so this will be some consolation for them."
Victory also gave North Korea payback for a 1-0 injury-time defeat in Japan in September. Uzbekistan will join Japan in the final round of qualifiers from Group C.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.