Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 lb (450 g) tubular pasta (ziti, bucatini, or Greek macaroni No. 2)
- 2 tbsp olive oil
- 1 large onion + 2 garlic cloves, finely chopped
- 1½ lb (680 g) ground beef or lamb (or a mix)
- ½ cup dry red wine (optional)
- 1 can (14.5 oz / 400 g) crushed tomatoes + 2 tbsp tomato paste
- Cinnamon, allspice, bay leaf, salt, pepper
- 6 tbsp unsalted butter + 6 tbsp all-purpose flour
- 4 cups (960 ml) whole milk
- 5 large eggs (2 for pasta, 3 for béchamel)
- 2¼ cups grated kefalotyri or Parmesan cheese, divided
- Ground nutmeg for béchamel and topping
Do This
- 1. Heat oven to 350°F (180°C). Grease a 9×13 in (23×33 cm) baking dish.
- 2. Make meat sauce: sauté onion and garlic, brown meat, add wine, tomatoes, spices; simmer 20–30 minutes until thick.
- 3. Boil pasta in salted water until just shy of al dente. Drain and toss with melted butter, 1 cup cheese, and 2 beaten eggs.
- 4. Make béchamel: cook butter and flour 2–3 minutes, whisk in warm milk until thick. Season with salt, pepper, nutmeg; cool briefly, then whisk in 3 beaten eggs and 1¼ cups cheese.
- 5. Layer: half the pasta, all the meat sauce, remaining pasta. Pour béchamel on top and smooth.
- 6. Sprinkle extra cheese and a pinch of nutmeg. Bake 45–50 minutes until puffed and deeply golden.
- 7. Cool 20–30 minutes so it sets, then slice into squares and serve warm.
Why You’ll Love This Recipe
- Classic Greek comfort food: cozy layers of pasta, cinnamon-scented meat, and a thick, silky béchamel.
- Beautifully sliceable: it bakes into neat, restaurant-style squares with distinct layers.
- Make-ahead friendly: assemble in advance and bake when you are ready to serve guests or family.
- Feeds a crowd: one pan easily serves 8 generous portions and reheats very well.
Grocery List
- Produce: 1 large yellow onion, 2–3 garlic cloves, fresh flat-leaf parsley (optional, for garnish).
- Dairy: Unsalted butter, whole milk, 5 large eggs, kefalotyri cheese (or Parmesan/pecorino), optional extra cheese for topping.
- Pantry: Olive oil, tubular pasta (ziti, bucatini, or Greek macaroni No. 2), ground beef and/or lamb, dry red wine, canned crushed tomatoes, tomato paste, all-purpose flour, cinnamon (stick or ground), ground allspice, bay leaf, ground nutmeg, sugar (optional), kosher or sea salt, black or white pepper.
Full Ingredients
Pasta Layer
- 1 lb (450 g) tubular pasta (ziti, bucatini, penne, or Greek macaroni No. 2)
- 2 tsp kosher salt (for the pasta water)
- 2 tbsp unsalted butter, melted (or olive oil)
- 2 large eggs, lightly beaten
- 1 cup (about 100 g) finely grated kefalotyri, Parmesan, or pecorino cheese
Cinnamon-Tomato Meat Sauce
- 2 tbsp olive oil
- 1 large yellow onion, finely chopped
- 2 garlic cloves, minced
- 1½ lb (680 g) ground beef, lamb, or a 50/50 mix
- 1 tsp kosher salt, plus more to taste
- ½ tsp freshly ground black pepper
- ½ cup (120 ml) dry red wine (optional but recommended)
- 1 can (14.5 oz / 400 g) crushed tomatoes
- 2 tbsp tomato paste
- ½ cup (120 ml) water or beef broth
- 1 small cinnamon stick or 1 tsp ground cinnamon
- ¼ tsp ground allspice
- 1 bay leaf
- 1 tsp sugar (optional, to balance acidity)
- 2 tbsp chopped fresh flat-leaf parsley or 1 tsp dried oregano (optional)
Silky Béchamel Topping
- 6 tbsp (85 g) unsalted butter
- 6 tbsp (50 g) all-purpose flour
- 4 cups (960 ml) whole milk, warmed
- ½–¾ tsp kosher salt, to taste
- ¼ tsp freshly ground white or black pepper
- ¼ tsp ground nutmeg
- 3 large eggs, at room temperature
- 1¼ cups (about 125 g) finely grated kefalotyri, Parmesan, or pecorino cheese
For Assembly and Topping
- 1–2 tsp olive oil or butter, for greasing the baking dish
- ¼ cup (about 25 g) extra grated kefalotyri or Parmesan, for sprinkling
- Pinch of ground nutmeg, for the top (optional)
- Chopped fresh parsley, for garnish (optional)

Step-by-Step Instructions
Step 1: Get Set Up and Prep the Dish
Preheat your oven to 350°F (180°C) with a rack in the middle. Lightly grease a 9×13 inch (23×33 cm) baking dish with olive oil or butter. If you are worried about drips, place the dish on a rimmed baking sheet for easier handling.
Gather and measure all ingredients: chop the onion and garlic, grate the cheese, and warm the milk for the béchamel (you can do this in a small pot or the microwave until just warm, not boiling). Having everything ready makes the cooking process much smoother.
Step 2: Make the Cinnamon-Tomato Meat Sauce
Heat 2 tbsp olive oil in a large, deep skillet or saucepan over medium heat. Add the chopped onion and cook, stirring occasionally, for 5–7 minutes until soft and translucent. Add the minced garlic and cook for 30–60 seconds, just until fragrant.
Add the ground beef and/or lamb, breaking it up with a spoon. Season with 1 tsp salt and ½ tsp pepper. Cook for 6–8 minutes until the meat is well browned and most of the moisture has cooked off. If there is excess fat, spoon off a bit (you want some for flavor).
Pour in the ½ cup red wine (if using), scraping up any browned bits from the bottom of the pan. Let it simmer for about 2 minutes to reduce slightly. Stir in the crushed tomatoes, tomato paste, and ½ cup water or broth.
Add the cinnamon stick (or ground cinnamon), allspice, bay leaf, and sugar if using. Bring to a gentle simmer, then reduce the heat to low. Cook uncovered for 20–30 minutes, stirring occasionally, until thick and rich. You want a hearty, spoonable sauce, not too runny.
Remove the cinnamon stick and bay leaf. Taste and adjust salt and pepper. Stir in chopped parsley or dried oregano if using, then turn off the heat and set the sauce aside.
Step 3: Cook and Season the Pasta
Bring a large pot of water to a boil. Add 2 tsp salt, then add the 1 lb tubular pasta. Cook until just shy of al dente, usually 1–2 minutes less than the package directions. The pasta will finish cooking in the oven, so keeping it slightly underdone prevents mushiness.
Drain the pasta well and return it to the warm pot. Add the 2 tbsp melted butter and toss to coat. Allow it to cool for 3–4 minutes so it is warm but not hot enough to scramble eggs.
In a small bowl, lightly beat 2 eggs. Pour the eggs over the warm pasta, add 1 cup grated cheese, and toss quickly and thoroughly so every tube is lightly coated. This egg-and-cheese coating helps the pasta layer set into a beautiful sliceable base.
Step 4: Make the Silky Béchamel Sauce
In a medium saucepan, melt 6 tbsp butter over medium heat. Once melted and foamy, whisk in the 6 tbsp flour. Cook, whisking constantly, for 2–3 minutes to form a smooth, pale roux. It should smell slightly nutty but not browned.
Gradually add the warmed milk, about ½ cup at a time, whisking constantly to avoid lumps. Once all the milk is added, bring the sauce to a gentle simmer. Cook, whisking frequently, for 5–7 minutes until the béchamel thickens enough to coat the back of a spoon.
Season with ½–¾ tsp salt (to taste), ¼ tsp pepper, and ¼ tsp nutmeg. Remove the pan from the heat and let it cool for 5 minutes, stirring occasionally. This brief cooling step makes adding the eggs easier and prevents curdling.
In a separate bowl, lightly beat the 3 eggs. Slowly ladle about 1 cup of the warm béchamel into the eggs, whisking constantly to temper them. Then pour this egg mixture back into the saucepan with the rest of the béchamel, whisking well. Stir in 1¼ cups grated cheese until smooth. The béchamel should be thick, glossy, and pourable.
Step 5: Assemble the Layers
Give the pasta a final toss to loosen it slightly. Spread half of the pasta mixture evenly over the bottom of your greased 9×13 inch dish, arranging the tubes mostly in the same direction if you want a very neat, traditional look (this is optional but makes beautiful slices).
Spoon the entire meat sauce over the pasta layer, spreading it out all the way to the edges so it forms a uniform layer. Top with the remaining pasta, spreading it evenly and gently pressing down to compact it slightly.
Pour the warm béchamel over the top. Use a spatula or the back of a spoon to smooth it into an even layer that completely covers the pasta. This will bake into the signature golden, custardy top.
Step 6: Top, Bake, and Brown
Sprinkle the surface with the remaining ¼ cup grated cheese and a small pinch of nutmeg, if you like. This encourages a beautifully browned, flavorful crust.
Place the dish in the preheated 350°F (180°C) oven and bake for 45–50 minutes, until the top is puffed, deeply golden, and the edges are bubbling. If it is browning too quickly after about 30 minutes, loosely tent the top with foil.
Step 7: Rest, Slice, and Serve
Remove the pastitsio from the oven and place it on a cooling rack. Resist the urge to cut into it right away. Let it rest for 20–30 minutes. This resting time allows the layers to set so you can slice perfect squares that hold together.
Just before serving, sprinkle with a little chopped fresh parsley for color, if desired. Use a sharp knife to cut into generous squares and lift them out with a spatula. Serve warm, ideally with a simple green salad and maybe some crusty bread.
Pro Tips
- Undercook the pasta slightly: Pull the pasta 1–2 minutes before al dente so it does not turn soft in the oven.
- Thicken the meat sauce well: Let it simmer until it is thick and rich; a watery sauce will leak into the pasta and make the dish loose.
- Temper the eggs in the béchamel: Always cool the sauce briefly and whisk in a little at a time to the eggs first to avoid scrambling.
- Rest before slicing: The 20–30 minute rest is key to clean layers and neat pieces that look great on the plate.
- Choose flavorful cheese: Kefalotyri is traditional, but a mix of Parmesan and pecorino gives fantastic flavor if you cannot find it.
Variations
- Lamb-forward pastitsio: Use all ground lamb for a richer, more traditional flavor. You may want to spoon off a bit more fat after browning.
- Beef-only or lighter version: Use all lean ground beef, and swap half the whole milk in the béchamel for 2% milk. The dish will still be creamy but a bit lighter.
- Vegetarian pastitsio: Replace the meat with a mix of finely chopped mushrooms and cooked lentils, cooked down with the same tomato, wine, and spices for a hearty, meatless ragu.
Storage & Make-Ahead
Pastitsio stores and reheats very well, making it ideal for meal prep or entertaining. Once baked and cooled, cover the dish tightly and refrigerate for up to 3–4 days. Reheat individual portions in the microwave or rewarm the whole dish in a 325°F (165°C) oven, covered with foil, for about 20–25 minutes until heated through.
To make ahead, assemble the entire dish up to the point of baking, then cover tightly and refrigerate for up to 24 hours. Add an extra 10–15 minutes to the baking time if you are starting from cold. For longer storage, you can freeze the assembled, unbaked pastitsio (wrapped well) for up to 2–3 months. Thaw overnight in the refrigerator before baking as directed.
Nutrition (per serving)
Approximate values for 1 of 8 servings (using a beef-and-lamb mix and whole milk): about 680 calories, 34 g protein, 32 g fat, 56 g carbohydrates, 3 g fiber, and 950 mg sodium. Actual values will vary based on specific ingredients and brands used.

