Firstly, heat the olive oil in a pan over medium heat, and add the onion, garlic and carrot and cook until soft. Add the lamb and beef cube, then cook until the meat is brown and has a crumbly texture. Stir in the tomatoes, tomato puree, and the corn flour. Simmer, stirring occasionally, for about 15 minutes, or until thickened.
Meanwhile, peel and chop potatoes. Add the potatoes to a large pot and cover with water. Bring to a boil over medium heat, and cook until soft. Drain the potatoes and add them back to the pan. Mash with a potato masher, stir in the butter and season with salt and pepper, to taste.
Heat broiler to low.
Put the filling into a deep baking dish, then top with the mashed potatoes and put under a warm broiler until the top is brown and crisp.