Former CIA contractor Edward Snowden got stuck in the transit zone of a Moscow airport because Cuba said it would not let him fly from Russia to Cuba, according to a Russian newspaper.
Mr Snowden is wanted in the US for leaking details of US government surveillance programmes.
He had planned to fly to Havana from Moscow's Sheremetyevo airport a day after arriving from Hong Kong on 23 June.
But Mr Snowden, who eventually accepted a year's asylum in Russia after spending nearly six weeks at Sheremetyevo, did not show up for the flight although he had been allocated a seat.
The Kommersant newspaper said the reason was Cuba told officials to stop Mr Snowden from boarding the Aeroflot flight at the last minute.
It said Cuba had changed its mind after pressure by the US, which wants to try Mr Snowden on espionage charges.
The newspaper also said Mr Snowden had spent a couple of days in the Russian consulate in Hong Kong to declare his intention of flying to Latin America via Moscow.
"His choice of route and his plea to help were a complete surprise to us. We did not invite him," Kommersant quoted a Russian state source as saying.
Allowing Mr Snowden to land would have put Cuba's relations with the US at risk.
Ties between the US and Russia were strained when Russia granted Mr Snowden asylum.
Following the disagreement over Mr Snowden, US President Barack Obama postponed a meeting with Russian President Vladimir Putin planned for next month.