Finding cheap eats in Milan is easier than the city’s reputation suggests — you just have to ignore the restaurants with English menus taped to the window. I’ve eaten my way through Milan for years on a journalist’s per diem, and the rule is simple: stand at a counter, order in Italian, and you will rarely pay more than €10 for lunch. Sit down inside a restaurant within sight of the Duomo spires, and the same plate becomes €22 plus a €3 coperto. The good news is that Milan has built an entire parallel food economy around fast, cheap, excellent food — panzerotti for €3, pan-pizza slices for €5, full pranzo di lavoro menus for €12 — and most of it is invisible to short-stay tourists. This guide is the list I send friends: 20-plus specific places under €15, with addresses, signature dishes, and the trade-offs I’d flag if you asked me in person.
For broader context on what a trip here actually costs, I’ve put together a full budget Milan guide and a more granular trip-cost breakdown — both pair well with this one.
How cheap eating actually works in Milan
Milan is an expensive city, but cheap food is a real category here, not a workaround. The Milanese eat lunch fast — most office workers have 45 minutes and limited patience — and an entire infrastructure of tavola calda counters, panificio bakeries, pizza-by-the-slice windows, and rosticceria rotisseries exists to feed them quickly. These are the same places to use as a visitor. They’re not lesser versions of “real” restaurants; they’re a different format with its own conventions.
The five formats that matter for budget food Milan-wise:
- Tavola calda — literally “hot table.” Cafeteria-style counter with prepared pasta, roast meats, vegetables, and salads sold by the portion. €8–€12 fills a plate.
- Pizza al taglio — pizza by the slice, sold by weight or by the rectangular cut. €3–€6 per slice.
- Panzerotti — fried half-moon pockets of dough filled with mozzarella and tomato. Milan’s signature handheld snack. €3 each.
- Panini and focaccia bars — sandwich counters, often attached to bakeries. €5–€9 for a substantial sandwich.
- Pranzo di lavoro — the weekday “work lunch” set menu, typically a first course plus a second and water or coffee, €10–€15.
One structural point: cheap meals Milan-wide are almost always cheaper at lunch than at dinner. Dinner is when locals slow down and restaurants charge accordingly. If you want to keep your daily food budget under €25, eat your big meal between 12:30 and 2:30 PM and treat dinner as an aperitivo spread or panini. The best happy-hour aperitivo deals in Milan can replace dinner for €10–€12 including a drink, which is the single most powerful budget hack in the city.

Milan’s best tavola calda and cafeteria-style spots
The tavola calda is the cheapest sit-down option in Milan. You point at what you want, the server plates it, you pay at the register, and you eat at a stand-up counter or small table. There’s no coperto, no service charge, no menu in three languages. Here are the ones I actually use.
Tavola Calda Bar Lucio (Porta Romana) is the platonic ideal of the format — a fluorescent-lit room behind a counter heaped with the day’s pastas, roasts, and contorni. A full plate of two items plus a glass of water is €9. Office workers from the Prada and Fondazione Prada offices pack it from 12:45, so go at 12:15 or 1:45.
Princi (multiple locations, the Largo La Foppa branch is my pick) is the upscale-bakery version. It’s pricier than the no-name tavole calde — a slice of focaccia and a coffee runs €7.50 — but the quality is real and the room is beautiful. The Porta Garibaldi location stays open late and works for a cheap dinner. Order at the counter, pay, sit at the high tables.
Cargo (Tortona / Porta Genova) is a hybrid concept store and canteen inside an ex-industrial space. The lunch buffet is around €13 for a fixed plate, vegetarian-heavy, and the design crowd uses it as a default. Good if you want to sit down without committing to a full trattoria.
Vecchia Latteria (Centro, Via dell’Unione) is a tiny vegetarian institution running since the 1960s. The handwritten menu has omelets from €8 and elaborate first courses to €13. There are about twelve seats, so arrive at noon sharp or after 2 PM.
Da Ravizza 1871 (Via Ulrico Hoepli, two minutes from Piazza Duomo) is a Sicilian rotisserie that doubles as a cheap aperitivo. €10 gets you a tray of arancini, baked anelletti, vegetable pies, and savory brioches that genuinely functions as dinner.
Cheap eats Milan pizza scene — pan, slice, and Neapolitan
Pizza in Milan splits into three styles, all of which can be had cheaply if you know where to go.
Pizzeria Spontini is the Milanese pan-pizza institution and the single best cheap meal in the city center. The original opened in 1953 on Via Gaspare Spontini and there are now branches across town — Lima, Buenos Aires, Centrale, Duomo, Navigli. Spontini does one thing: thick, square-cut slices with a soft top, crisp greasy bottom, and a small menu of toppings. A standard margherita slice is €5, the large version is €7, and the special with anchovies and capers (the one I order) runs €8.50. Two slices and a beer is €15 and you will not need dinner. The Stazione Centrale branch is the easiest if you’re arriving by train.
Gino Sorbillo Lievito Madre al Duomo is the Milan outpost of the Naples pizza dynasty, two minutes from the cathedral on Largo Corsia dei Servi. This is the only pizzeria in the immediate Duomo footprint where I’d eat without checking the price first. The Marinara is €7.40, the Margherita around €9, and most other pizzas land €10–€14. You sit down, there’s a coperto of about €2, and it is still excellent value for the location.
Pizza e Mozzarella (Navigli, Via Carlo Torre 22) does Neapolitan-style pizza with DOP buffalo mozzarella for €4.50 — yes, four-fifty for a margherita. It’s a real pizzeria with a wood oven, not a slice counter. They don’t take large reservations on weekends, so go at 7 PM or after 10.
Pizzeria Da Zero (Isola, Porta Venezia, Sarpi) is the Cilento-style alternative — slightly thicker rim, ingredients from the founder’s home region in Campania. Margheritas around €7, specials €9–€12. The Isola branch has the best vibe.
For a deeper dive on the upper end too, my guide to the best pizza in Milan covers the splurge pizzerias side by side.

Panzerotti, pizza al taglio, and street food
Luini (Via Santa Radegonda 16, behind the Duomo) is the obligatory stop. The Luini family has been frying panzerotti since 1949, and the line moves fast because the women behind the counter have been doing this for decades. A classic mozzarella-and-tomato panzerotto is €3, max around €4 for the seasonal fillings — crudo with ham, funghi with mushrooms, ricotta. Get one fried (the original) and one baked, eat them on the steps of San Carlo across the street, and you’ve had lunch for €6. The queue looks intimidating but rarely takes more than ten minutes.
Pizzium (multiple locations, including Vetra and Porta Venezia) does regional Italian pizza by the slice — different doughs and styles depending on the region of the day. Slices run €4–€6 by weight. Good for a quick stand-up lunch.
Crocca (Vetra, Porta Romana) is the Milanese cult favorite for pinsa-style slices — long, oval, crisp-bottomed. €5–€7 per slice, sold by weight.
La Ravioleria Sarpi (Via Paolo Sarpi 27) is the takeaway window in Chinatown that single-handedly converted me to the neighborhood. Four hand-folded Chinese dumplings for €4, eaten standing on the sidewalk; sautéed udon with beef and peppers from the connected butcher shop for €9. Cash preferred.
For kebab — Milan’s other reliable cheap option — the densest cluster is around Stazione Centrale and Loreto. €5–€7 for a kebab plus chips at any of the late-night spots. The full Milan street food guide covers the rest of the format.

Bakeries, panini joints, and counter sandwiches
A panificio sandwich is the most overlooked budget tool in Milan. Most bakeries make a few prepared panini on focaccia or schiacciata each morning, charge €4–€6, and let you eat them on a bench in any of the city’s parks.
De Santis (Corso Magenta 9) is the panini benchmark — operating since 1962 with 200-plus combinations on a chalkboard menu. Sandwiches run €8–€10, which is the high end for the format, but the bread is fresh and the fillings are generous. The Sant’Ambrogio basilica is a five-minute walk for an eat-in-the-piazza picnic.
Bar Luce (Fondazione Prada, Largo Isarco) is the Wes Anderson-designed bar with €4 espresso and around €7 for a panino. It’s worth it for the room alone — pastel formica, original Milanese jukebox, a stage set you can eat in. Sandwich plus coffee plus dessert lands at €13.
Panificio Aliberti (Sarpi area) is the bakery I default to for breakfast and morning panini. Focaccia by weight, hot from the oven, €3–€5 a slab. Slice of pizza bianca with prosciutto for €4.50.
Panino Giusto (multiple locations) is the gourmet panini chain — more polished, fillings like culatello and gorgonzola, €9–€12 per sandwich. Reliable when you want sit-down service without trattoria prices.
All’Antico Vinaio (Centro) is the Florentine schiacciata franchise that opened in Milan a few years back. Massive sandwiches for around €7. Lines are long; go at 11:30 or 3.

Pranzo di lavoro: the weekday lunch deal
The pranzo di lavoro — “work lunch” — is the single best value in Milan dining. Most neighborhood restaurants offer a fixed midday menu Monday through Friday, often with a chalkboard outside listing the day’s options. The format is typically primo (pasta or risotto) plus secondo (meat or fish with a side) plus water and coffee, for €10–€15. You will eat better than at most €40 dinners and the place will be full of office workers, which is exactly the signal you want.
In Brera, the trattorias on Via Fiori Chiari and the side streets off Via Solferino mostly offer €12–€15 lunch menus aimed at the gallery and publishing workforce. Walk the streets between noon and 1 PM and look for chalkboards.
In Navigli, the trattorias along the canals raise prices at dinner but most still run weekday lunch menus around €12. Look for “menu fisso” or “menu del giorno” boards.
In Porta Romana, Trattoria Madonnina (Via Gentilino 6) is the old-school choice — Lombard cuisine in a 1960s-decor dining room, full cotoletta alla milanese with sides for around €15. Lunch crowd is local.
In Baggio (further out, M1 Bisceglie), Trattoria Fà Ballà L’Oeucc has a €15 fixed lunch — first, second, side, wine — and an outsized “elephant ear” cutlet that’s worth the metro ride.
In Precotto (M1 north end), Trattoria San Filippo Neri on Viale Monza 220 does a €15 set lunch including wine that’s packed with office workers from the nearby business park.
In Lima / Buenos Aires, Trattoria Sabbioneda Da Romolo (Via Tadino 32) is a fresh-pasta institution where first courses are around €8 and second courses cap at €12.50. One primo is enough for lunch.
The chain Miscusi (Cadorna, Centrale, Isola, Bocconi, Colonne di San Lorenzo) does fresh-pasta bowls €9–€12 with free water and bread included. Not the most romantic option but consistently good and very fast.
Supermarkets and rosticcerie — the secret budget tier
The hack nobody writes about: Milan’s supermarkets all have rosticceria counters with roast chicken, lasagna, vegetable sides, and fresh pasta sold by weight. A full meal from one of these costs €6–€8 and travels well.
Esselunga is the dominant Milanese supermarket and the rosticceria standard. The branches at Viale Piave (Porta Venezia), Via Solari (Navigli), and Stazione Garibaldi all have full counters. A quarter roast chicken with potatoes is around €6; a portion of lasagna €4.50; salads by weight from €1.50 per 100g. There’s usually a small seating area or you can take everything to a park.
Pam and Carrefour Express branches are smaller but most have prepared-food sections. The Pam at Stazione Centrale stays open late and saves dinner if you arrive after restaurants close.
Bottega del Macellaio and independent gastronomie in residential neighborhoods sell ready-made plates of vitello tonnato, roast vegetables, and pasta dishes — €5–€9 per portion, dramatically better than supermarket equivalents. The cluster around Via Vigevano in Navigli is reliable.
For a longer apartment stay, the budget math gets compelling fast. My accommodation tips for Milan includes the case for renting a flat with a kitchen if you’re staying more than three nights.
Neighborhoods with the best cheap food density
Where you base yourself matters as much as which restaurants you target. These are the neighborhoods I would point a budget traveler toward when chasing cheap eats Milan locals actually use.
Paolo Sarpi (Chinatown) is the densest cheap-food street in Milan. The pedestrian stretch of Via Paolo Sarpi from Largo La Foppa to Via Bramante is lined with dumpling counters, bubble tea shops, Sichuan noodle joints, and bakeries. Beyond Ravioleria Sarpi, try Tang Gourmet (Via Paolo Sarpi 17) for steamed and pan-fried dumplings at €3–€5 per portion of five, with noodle bowls €5–€7.50. Ravi-Olì for hand-pulled noodles, around €8 a bowl. The neighborhood is also walkable from Brera, so you can do a museum morning and a cheap Chinatown lunch.
Navigli has two faces. The waterside restaurants are tourist-priced — expect €18 pastas. But step one block back from the canals onto Via Vigevano, Via Corsico, or Corso San Gottardo and the prices halve. The aperitivo economy here is the best in Milan: €10–€12 cocktails with substantial buffet from 6:30 PM. The Milan aperitivo guide maps the specific bars.
Isola is the student-and-young-professional neighborhood north of Porta Garibaldi. Cheap pizza (Da Zero), cheap pasta (Miscusi Isola), cheap aperitivo, and a Saturday market on Piazzale Lagosta. Less touristy than Navigli and arguably better value.
Buenos Aires / Lima — the long shopping street running north from Porta Venezia — is full of Spontini branches, kebab spots, and the Tadino-area cluster of cheap restaurants (Sabbioneda, Ramen Shop). Useful if your hotel is in the Centrale area.
Bocconi / Porta Romana — the university district south of the center has the student-pricing infrastructure baked in. Bakery focaccia, €5 panini, Spontini at Porta Romana metro. The student guide to Milan goes deeper on this neighborhood.
What to avoid: tourist traps and the coperto problem
Three failure modes will blow up your budget in Milan if you’re not paying attention.
The Duomo perimeter. Any restaurant with table service inside the rectangle bounded by Via Torino, Via Mazzini, Corso Vittorio Emanuele, and Via Mercanti is overpriced by default. Tourist-menu pastas for €16–€20, mediocre pizza for €15, and a €3.50 coperto per person. The pattern is so reliable that the exceptions (Sorbillo, Luini, Da Ravizza, Spontini Duomo) are worth memorizing.
The English-only menu. If the menu is in English with no Italian, prices are inflated and food quality is usually worse. Italian menu with English translations beneath is fine; English-only is a flag.
The coperto and service traps. Italian restaurants legally charge a coperto (“cover charge”) of €1.50–€3.50 per person for bread and table setting. This is normal and fine. Less fine: 12–15% service charges added on top, “tourist menu” surcharges, and bread baskets you didn’t order showing up at €5. Read the menu fine print. At sit-down places, ask if there’s a coperto before sitting. At counters and tavole calde, there is never a coperto, which is the structural reason they’re cheaper.
Galleria Vittorio Emanuele restaurants. Beautiful arcade, gorgeous mosaic floors, and €7 espressos. Coffee from the bar is €1.20 anywhere else in Milan. Order at the counter standing up if you must (still €4 in the Galleria), or walk one minute to any normal bar.
If you want the affordable restaurants Milan does well at the sit-down tier, the full Milan food guide covers the mid-range bracket I trust.
Free things to do between cheap meals
Budget eating pairs naturally with budget sightseeing. The free museums and attractions in Milan piece has the full inventory — Cimitero Monumentale, the Duomo exterior, San Maurizio al Monastero Maggiore, Villa Necchi gardens, the Brera district itself — most of which are walking distance from the cheap-eat clusters above. A typical day in Milan for me: morning at a free or low-cost museum, Spontini or Luini for lunch, a long walk through Sempione or Indro Montanelli park, aperitivo in Isola or Navigli to replace dinner. Total food and culture spend: €25.
FAQ
How much is a cheap meal in Milan?
A genuinely cheap meal in Milan is €5–€10. Two slices of Spontini pizza and a beer: €13. A panzerotto from Luini and a coffee: €4. A tavola calda plate of pasta and a roast vegetable: €9. A weekday pranzo di lavoro set menu with first course, second course, and water: €12–€15. Sit-down dinner in a normal trattoria — not a tourist trap — will start around €25 per person including wine. The €30+ per person dinner is a choice, not a necessity.
What is the cheapest food in Milan?
The panzerotto at Luini at €3 is probably the cheapest single item that constitutes a real meal. A close second is the pizza al taglio slice at any neighborhood window, around €4 for a substantial cut. Pizza Spontini’s standard slice at €5 fills you up. For sit-down cheap, Chinese dumplings at La Ravioleria Sarpi or Tang Gourmet are €3–€5 for a portion.
Is street food common in Milan?
Less than in Naples or Palermo, but the panzerotto and pizza al taglio cultures are essentially street food — sold from a window, eaten standing or walking. Chinatown adds a layer of dumplings, baozi, and crepes. Markets like Mercato di Lorenteggio and Mercato Centrale (inside Stazione Centrale) have prepared-food stalls. The classic Milanese sit-down meal tradition is stronger than the street tradition, but cheap eats are easy to find.
Where do locals eat cheaply in Milan?
At tavole calde near their offices for weekday lunch (under €10), at neighborhood pizzerias for casual dinner (around €15 per person with a beer), at Spontini for a fast solo meal, and at aperitivo for cheap dinner — €10–€12 for a cocktail and substantial buffet. The student crowd lives on Miscusi, Spontini, Luini, kebab, and supermarket rotisserie chicken from Esselunga.
Is Luini panzerotti worth it?
Yes, unambiguously. At €3 for a hot fried pocket of mozzarella and tomato, two minutes from the Duomo, with a line that moves in under ten minutes, it is the best price-quality-location combination in central Milan. The variations — ham, mushrooms, ricotta, seasonal fillings — are all worth trying. Skip the sweet ones; the savory tradition is what they do best.
Can I eat well in Milan for €20 a day?
Realistically, yes. A €1.20 espresso and €1.50 brioche for breakfast (€2.70), a €4 panzerotto and bottle of water for lunch (€5.50), and an aperitivo for €12 covering both a cocktail and the buffet that replaces dinner. Total: €20.20. Substitute Spontini at €8 for the aperitivo and you have a more conventional day at €16. Add a sit-down trattoria lunch once or twice in a week and you’re still under €30 most days.
Final thoughts
The thing that surprised me most about cheap eats in Milan is how little quality you sacrifice. Spontini’s pan pizza isn’t a budget compromise — it’s a category of pizza that has no upscale equivalent. The Chinese dumplings at La Ravioleria Sarpi are better than what you’ll get at most €20-per-person Chinese restaurants. The tavola calda lunch at Bar Lucio for €9 is better than the tourist-menu pasta at €18 inside the Duomo arcade. The pattern across Milan is that cheap food, when you find the right places, isn’t a downgrade from the expensive food — it’s a different format optimized for speed and volume rather than ambience.
The mistake first-time visitors make is treating cheap food as a fallback for the days they’re short on cash. The locals don’t do this. They eat at Luini and Spontini and the corner panificio because those places are genuinely good, and they save the €40 dinners for the few restaurants that earn it. If you adopt that pattern for a four-day Milan trip — counter lunches, supermarket or aperitivo dinners, one or two real sit-down meals — you’ll eat better than the tourists paying twice as much. And you’ll have most of your budget left for the Duomo rooftop, the Brera Pinacoteca, and the train to Bergamo or Lake Como.