Tesco is limiting shoppers to three iceberg lettuces, as bad weather in Spain caused "availability issues".
Morrisons has a limit of two icebergs to stop "bulk buying", and is limiting broccoli to three heads per visit.
Prices have also risen, with Lidl’s iceberg lettuce up to 1.19 pounds from 42p.
But both Aldi and Lidl have told the BBC their stock levels have not been affected.
Asda said courgette stocks were still low after a UK shortage last month.
Customers have posted photographs on social media sites of empty lettuce shelves in Tesco stores, alongside signs asking them to limit lettuce purchases.
One notice read: "Due to continued weather problems in Spain there is a shortage of iceberg lettuce.
"To protect the availability to all our customers, we are limiting bulk purchases to three per person. We apologise for any inconvenience caused."
A spokesman for the Prime Minister, Theresa May, said the government knew there was a "situation", and that the Department for Environment, Food and Rural Affairs (Defra) was "monitoring" it.