For the Bolognese: In a large pot, heat the olive oil over medium-high heat. Add the ground beef and cook until browned, about 5-7 minutes, making sure to crumble the beef as it cooks. Add the onion, celery, and carrots and cook for 5-7 minutes until softened. Add the garlic and cook for 1 minute until fragrant.
Stir in the tomato paste and cook for 2-3 minutes. Add the canned tomatoes, beef stock, red wine, salt, pepper, thyme, oregano, and basil. Bring to a simmer and let cook for 30-45 minutes, stirring occasionally, until the sauce has thickened.
For the Bechamel: In a medium saucepan, melt the butter over medium heat. Whisk in the flour and cook for 2-3 minutes. Gradually whisk in the milk and cook, stirring constantly, until the sauce has thickened, about 5-7 minutes. Remove from heat and stir in the salt, pepper, nutmeg, paprika, and egg yolks. Stir in the Parmesan and Pecorino cheeses.
To assemble the lasagna: Preheat the oven to 375°F. Spread a thin layer of the Bolognese sauce in the bottom of a 9x13 inch baking dish. Top with a layer of lasagna sheets, then a layer of Bechamel sauce, and a sprinkle of Parmesan. Repeat the layers until all the ingredients are used up, ending with the Bechamel sauce. Top with the mozzarella cheese.
Bake for 30-40 minutes, until the top is golden brown and bubbly. Let cool for 10-15 minutes before serving. Garnish with chopped parsley.
