In a large pot add carrot, onion, celery and garlic to a good drizzle of oil over medium-high heat. Fry until they begin to brown, then add in beef. Break up with a wooden spoon and continue frying until it begins to brown. Season with a pinch of salt and pepper, then continue frying until fully cooked through.
Add in tomato puree and fry off for a couple of minutes, then pour in wine. Deglaze the pan if needed, then allow to simmer and soak into the beef for 5mins. After, pour in tomato passata, beef stock and Worcestershire sauce. Add in basil, parsley, chilli flakes, sugar, salt and pepper, then give it a good stir.
Lower heat to a gentle simmer and pop on the lid. Allow to simmer for AT LEAST 1 hour 30mins, stirring very occasionally. This will give time for the flavours to develop and really tenderize beef. After, remove the lid and allow to simmer until the sauce thickens (see video below for consistency reference). Take off the heat, stir in 1/4cup / 20g parmesan, check for seasoning, then place to one side.
Meanwhile, pop your spaghetti in heavily salted boiling water and cook until al dente. Very important not to fully cook the spaghetti, you want it still a little hard or it'll come out too soft once baked. Drain when needed, then place back in the same pot. Stir in two ladles of meat sauce.
In a large baking dish add half your spaghetti, then half of what's left of the meat sauce, followed by half your mozzarella. Top mozzarella with the second half of your spaghetti and meat sauce. Finish with a layer of ricotta, the rest of your mozzarella and the rest of your parmesan. Try and make sure as much ricotta is covered by parmesan/mozzarella as possible.
Place in the oven at 200C/390F for 30mins, or until golden on top and bubbling round the sides. Leave to rest for a few mins, then slices into portions and serve up!