In a large frying pan add 1tbsp olive oil and then tip in the onions. Fry on a low heat for 5 minutes until soft and translucent.
Add the garlic to the frying pan and cook gently for a further 2 minutes. Stir often to avoid burning the onions and garlic as this will give the dish an acrid taste.
Add the celery and carrots. Give everything a good stir to combine all the ingredients together. Cook for 2 minutes more.
Push the vegetables to one side of the pan and fry the mince on a medium heat. Cook until the mince has browned slightly. You may need to do this in batches so as not to overcrowd the pan.
Once the meat is browned add the herbs, bay leaf, tomato puree, sugar, salt and pepper and give everything a good stir to combine.
If you want to add more flavour you can add the optional 125ml of red wine or apple juice at this point. Increase the heat and allow the liquid to bubble for 3 minutes while the alcohol from the wine burns off causing the liquid to reduce slightly.
Now add the tinned tomatoes and beef stock. Allow the mixture to come to the boil.
Once it reaches a boil reduce the heat to medium, pop on a lid and let the whole thing simmer away for 30 minutes.
The bolognese will be cooked through at this point but for a more intense flavour and richer sauce you can transfer the mixture to a lidded pot and into an oven that has been heated to 170c fan and cook for a further 1.5 hours.
Once the bolognese is cooked, remove from the oven and allow to cool for a while.
While the bolognese is cooking put your elbow pasta on to boil. Follow the cooking instructions on the packet but be sure your macaroni is al dente (i.e. it has a slight ‘bite’ to it).
Continue to make the cheese sauce while the bolognese and macaroni are cooking. To do this, heat the milk until it is nearly at boiling point. You can do this in the microwave in a microwavable jug or on the stovetop in a suitably sized saucepan over a low heat.
While the milk is heating through, put the butter into a clean saucepan. On a low heat allow the butter to melt. Once melted, add the flour and whisk vigorously until combined. Allow the butter and flour mixture to cook gently for one minute. You may see a few bubbles appear and that’s totally fine but don’t let the mixture burn in the pan. Keep stirring.
Gradually add the milk to the butter and flour mixture. Add the milk little by little to prevent any lumps forming.
When you’ve added all of the milk you can increase the heat to medium to allow it to come up to the boil. Make sure you stir continuously to prevent any burning on the bottom of the pan or any lumps forming.
Once it is boiling and has thickened you can turn the heat back down and add the cheese and mustard. Allow it to bubble away gently for a minute or so. You should now have a creamy and glossy cheese sauce.
For the final stages, combine the pasta and cheese sauce with the meat and tomato sauce mixture. First, add the drained pasta to the bolognese sauce then add two-thirds of the cheese sauce. Give everything a stir so it’s well combined.
For an extra cheesy topping with a crunch, transfer the mixture to an ovenproof dish, pour over the remaining sauce and sprinkle with a little extra cheese on top. Pop it under a pre-heated grill for 3-5 minutes until the cheese is golden and bubbling.
Serve immediately with a fresh and crunchy salad.