Preheat the oven to 400°F (200°C).
Heat the olive oil in a large pot or Dutch oven over medium heat. Add the chopped onion, carrot, and celery. Cook until softened, about 8 minutes. Add the minced garlic and cook for 1 additional minute.
Add the ground beef to the pot. Break the meat apart with a spoon and cook until browned completely. Stir in the tomato paste and cook for 2 minutes.
Pour in the red wine to deglaze the pot, scraping up any browned bits from the bottom. Let the wine reduce by half, then stir in the tomato passata, beef stock, and dried oregano.
Bring the ragù to a gentle boil, then reduce the heat to low. Cover and simmer for at least 1 hour until the sauce is rich and thickened. Season with salt and pepper.
Melt the butter in a separate saucepan over medium heat. Whisk in the flour and cook for 1 minute to form a paste. Gradually whisk in the milk until completely smooth.
Simmer the milk mixture until the sauce thickens. Remove from heat and stir in the ground nutmeg, ricotta cheese, and chopped fresh spinach. Set aside.
Spread a thin layer of the beef ragù on the bottom of a 9x13-inch baking dish. Top evenly with a layer of lasagna pasta sheets.
Spread half of the creamy spinach béchamel sauce over the pasta, followed by a layer of mozzarella and parmesan cheese. Top with another layer of pasta, then add a thick layer of beef ragù.
Repeat the layers until all ingredients are used, finishing the top layer with pasta sheets, a thin spread of béchamel, and a generous topping of mozzarella and parmesan cheese.
Bake uncovered for 30 to 35 minutes until the cheese is melted, bubbling, and golden brown on top.
Let the lasagna rest for 15 minutes before slicing. Garnish with chopped spring onion and serve warm.