Preheat oven to 180 degrees C. Grease a 2 litre casserole dish.
Heat oil in a frypan and cook onion and garlic, stirring, for 3 minutes until soft. Add lamb and cook over high heat 4 minutes. Stir in tomato paste and cook another 2 minutes.
Stir in diced tomatoes, bay leaves and stock. Season with salt and pepper. Bring to the boil, then reduce heat and simmer 35 minutes.
To make the white sauce, melt butter in a saucepan, stir in flour and cook 2 minutes. Gradually whisk in milk, turn down heat and cook 5 minutes until thickened. Remove from heat and let cool a little, then stir in egg and season to taste.
Place half the cooked macaroni in the bottom of the casserole dish. Spoon the meat sauce over the top and top with remaining macaroni. Pour white sauce over and scatter over the grated cheese.
Bake in preheated oven 25-30 minutes or until browned.