Preheat oven to 190 degrees C. Grease a large casserole dish.
Heat 2 tablespoons butter in a large heavy frypan over medium heat. Saute onions and parsley until onion is soft and translucent. Increase heat, add lamb and cook until evenly brown. Drain excess fat and set aside.
In a large bowl, combine tomatoes, herbs, salt and pepper. Roughly break up tomatoes with a wooden spoon and mix well with seasonings. Set aside.
In a saucepan over medium heat, melt the butter. Stir in flour until smooth. Whisk together milk and egg, then gradually whisk into flour mixture. Cook, stirring constantly until thick and smooth. Remove from heat and stir in grated cheese.
To assemble: In casserole dish, place 1/3 of potato slices on the bottom, covering as well as possible. Top with half of meat mixture followed by half of tomato mixture. Repeat layers, ending with a layer of potatoes. Spread cheese sauce evenly over the top.
Cover and bake in preheated oven for 1 1/2 hours. Remove cover and bake 30 minutes, or until lightly browned.