For the meat sauce, in a medium-sized pot, saute the onions, carrots and celery with a couple of tablespoons of vegetable oil until translucent. Add the bay leaf, cinnamon stick and garlic and saute until fragrant. Add the ground beef. Once the meat has browned, add the tomato paste, salt, pepper, chopped tomatoes, and water. Season with oregano, basil, and thyme; mix and bring the mixture to a boil on high heat, then cover the pot and leave to simmer on low heat for about 25 minutes until the sauce thickens. Once done, remove the cinnamon stick and bay leaf.
To prepare the béchamel sauce, in a large pot melt the butter. Add flour and mix on medium heat until the roux has turned slightly golden brown - it is important to brown the roux to remove the floury flavour from your bechamel sauce. Add the milk and continue mixing to avoid any clumps and to avoid anything from sticking to the base. If the sauce is too thick, add more milk—season with salt, white pepper powder and nutmeg. Remove from heat and keep aside.
To prepare the pasta, bring a large pot of water seasoned with salt to a boil. Cook the pasta according to the package instructions. Please make sure not to overcook, pasta should be al-dente as it will cook further once baked. Drain the pasta.
Preheat the oven to 180 degrees Celsius.
Add the cooked pasta to the pot with the meat sauce, and mix until fully combined. Pour the pasta mixture into a large casserole dish. Next, add the bechamel sauce on top; make sure to spread it over the pasta evenly. Finally, top the béchamel sauce with the grated mozzarella cheese
Bake in the oven for 25 to 30 minutes, until it has a beautiful golden-brown top.