Heat the Oil: In a large skillet or saucepan, heat 2 tablespoons of olive oil over medium heat. Add the chopped onions, carrots, and celery, and sauté for 5-7 minutes until softened.
Brown the Meat: Add the ground beef and pork to the skillet, breaking it apart with a spoon. Cook until browned, about 7-10 minutes. Season with salt, pepper, oregano, and basil.
Add the Tomato Base: Stir in the garlic and tomato paste, cooking for 1-2 minutes. Pour in the diced tomatoes, beef broth, and red wine (if using). Bring to a simmer and reduce the heat to low.
Simmer: Add the whole milk, stir, and let the sauce simmer gently for 30-45 minutes, stirring occasionally. The sauce should thicken and develop rich flavors.
Melt the Butter: In a medium saucepan, melt the butter over medium heat.
Make a Roux: Add the flour and whisk constantly for 1-2 minutes until lightly golden and bubbling.
Add the Milk: Slowly pour in the warm milk while whisking to prevent lumps. Continue to cook and stir until the sauce thickens, about 5-7 minutes.
Season: Add a pinch of ground nutmeg, salt, and pepper to taste. Set aside.
Preheat the Oven: Preheat your oven to 375°F (190°C).
Prepare the Lasagna Noodles: Cook the lasagna noodles according to package instructions if you're not using oven-ready noodles. Drain and set aside.
Layering: In a 9x13-inch baking dish, spread a thin layer of Bolognese sauce on the bottom.
Add a layer of lasagna noodles on top.
Spread a layer of Bolognese sauce, then a layer of Béchamel sauce.
Sprinkle with some Parmesan cheese.
Repeat the layers until all ingredients are used, finishing with a top layer of Béchamel and a generous sprinkle of Parmesan cheese.
Bake: Cover the dish with foil and bake in the preheated oven for 25-30 minutes. Remove the foil and bake for an additional 10-15 minutes until the top is golden and bubbling.
Rest: Let the lasagne rest for 10 minutes before slicing and serving.
Garnish: Serve with fresh basil or parsley if desired.