
Police were called onto the Boeing 777 jet as tempers frayed among the 200 passengers after the airline prevented them from disembarking.
The flight from Ahmedabad via Mumbai was due to arrive at Heathrow, London's other major airport, at 08:00 local time (07:00 GMT) but was diverted to Gatwick due to fog.
The plane was unable to complete the 44-mile (70-kilometre) cross-city journey as aviation law limits the length of time for which flight crew are allowed to work in one shift.
A replacement crew was shuttled across the British capital, but reportedly got lost in Gatwick Airport.
Rahul Joglekar, a BBC journalist who was on the flight, said people became "very, very angry."
"A group of passengers gathered close to the cockpit demanding an explanation from the pilot, but the pilots still didn't come out," he said.
Another passenger Jas Johal blasted the lack of refreshments on board, saying "everyone was very hungry and there was no sign of any food."
A spokesman for Gatwick said that it had been Air India's decision to keep the passengers on board rather than arrange alternative transport to Heathrow.
"The plane remained off the runway and kept in the vicinity of the tarmac. The duty of care in those situations lies with the airline," he said.
One passenger said Air India gave the weary travellers a letter, offering its "sincere apologies for any inconvenience," when they finally reached Heathrow shortly before 17:30.
to be stranded on an Air India flight for many hours, they were not allowing us to disembark until we started to rebel and demanded to disembark I think that had they not allowed us to disembark we would have seized the aircraft we had to fight for everything we got: drinks meals ...to top it off when we eventually boarded to take off(it was a New Delhi Mumbai London flight and we were starnded in Mumbai) the cabin crew found out there was not enough food and drinks for the whole flight to London.
Avoid Air India!