Source: Bobby Flay and BBC Food
Heat 1 tablespoon of olive oil in a large saucepan (at least 5 quarts) over medium-high heat. Add lamb, cinnamon, ginger, allspice, cayenne, cumin, and salt and black pepper. Cook, stirring to break up the meat, until browned, about 5 minutes. It's ok if the meat is still slightly pink inside; you just want to brown the outside for now. Transfer lamb to a strainer and drain the juices; also discard any liquid left in the pan. Return the pan to the heat, add remaining 3 tablespoons olive oil, and heat until it begins to shimmer. Add onions and zucchini, season with lots of salt and black pepper, and cook until soft, about 5 minutes. Add the garlic and cook for 1 minute. Add the tomato paste and cook for 1 minute.
Return the lamb to the pan, add the wine, and cook, stirring occasionally, until wine is almost completely evaporated, about 5 minutes. Add the tomatoes, oregano, and bay leaves, and bring to a boil. Reduce heat to medium-low and simmer, stirring occasionally, until thickened, about 30 minutes. Taste and season with salt and pepper, if needed. Remove from heat.
While the meat sauce is simmering, prepare the eggplant. Preheat oven to 400°F. Cut the eggplant into 1/4-inch slices. Brush each side with olive oil and season liberally with salt. Roast on a baking sheet for about 20 minutes, flipping the disks halfway through, until eggplant is softened and golden brown.
Put a large pot of water on to boil. When water has boiled, add the potato slices and cook for about 5 minutes. You want the potatoes to be softened on the outside, but still undercooked in the middle - they will finish cooking when the assembled dish is baking. Drain potatoes in a colander under cold running water.
Melt butter in a medium saucepan over medium heat. Add the flour and cook, whisking constantly, until mixture is pale and smooth, 1-2 minutes. Still whisking constantly, pour in milk slowly. The mixture will appear to seize up and thicken dramatically at first, but keep adding milk and stirring, and the sauce will loosen. Add bay leaf and cook until thickened, 4-5 minutes. Season with salt, pepper, and nutmeg and discard the bay leaf. Let sauce cool for 5 minutes.
Whisk together egg yolks and lemon zest in a small bowl. After the bechamel has cooled for 5 minutes, whisk egg and lemon zest mixture into the bechamel sauce until smooth.
Preheat oven to 400°F. Spread about one-third of the meat sauce in a 3-quart casserole dish, then top with half of the eggplant slices and half the potato slices. Repeat the layers with another third of meat sauce and the remainder of eggplant and potato slices. Top with the remainder of meat sauce. Pour the bechamel over the top and spread evenly with a spatula. Sprinkle the Romano evenly over the top. Place the dish on a baking sheet and bake until browned and bubbly, about 45 minutes.
If you can (I couldn't), let cool for about 20 minutes before serving - this will help the juices reabsorb into the dish and result in a less watery moussaka when you cut into it.