No injuries were reported and the plane later took off and landed safely at its destination in the Netherlands, some eight hours late.
The plane, which was en route from Bombay, India, to Amsterdam, had 255 passengers and crew, according to a spokesman for the Iranian civil aviation authority.
The crew decided to land the plane in the Iranian capital when an indicator detected a fire in the cargo hold, but that was later determined to be a false alarm, said Jeff Smith, a spokesman for Eagan, Minn.-based Northwest Airlines.
U.S. carriers do not serve Iran because of American economic sanctions. Washington broke ties with Iran shortly after the 1979 Islamic Revolution when militants seized the U.S. Embassy and held 52 hostages for 444 days.
The plane spent about seven hours in Iran on Sunday, while officials determined there was no mechanical problem, then bought fuel.
"A lot of the delay in Tehran was just in negotiating and purchasing fuel in a place that we normally do not divert to," Smith said.