The Food Security Bill proposes to make food a legal right and seeks to provide 5kg of grain every month to some 800 million poor people.
The bill proposes to provide a kilo of rice at three rupees (six cents; four pence), wheat at two rupees and millet at one rupee.
Millions live below the poverty line, and many children are malnourished.
The scheme is likely to cost 1.3 trillion rupees ($23.9bn; £15.8bn) every year.
The bill will now go to parliament for discussion and approval, Food Minister KV Thomas said on Tuesday.
The bill was an election promise made by the ruling Congress party and, correspondents say, its implementation will help the party in general elections due next year.