Heat half of the oil in large saucepan and cook the beef until no pink remains; set aside. Add remaining oil to pan, add the onion, carrots and celery to the pan, and sauté vegetables over medium-low heat until tender, about 20 minutes. Add the garlic, flour and tomato puree, increase the heat and cook for a few minutes. Add cooked beef and wine to the pan, and let it reach a low boil. Reduce heat to low, and simmer uncovered for 30 minutes. Add the stock, Worcestershire sauce, thyme, and bay leaf, and cook uncovered for another 15 minutes. The pan gravy should thicken by now. If a lot of liquid remains, increase heat slightly and let cook a few more minutes. Discard the thyme stalk and bay leaf.
Meanwhile, make the mash. In a large saucepan, cover the potatoes in salted cold water. Bring the water to a boil, reduce heat and let simmer until tender, about 15-20 minutes. Drain well, and let potatoes stand a few minutes. Mash well with milk butter, half of the cheese, salt, pepper, and a teaspoon or so of nutmeg.
Spoon the meat mixture into an oven-proof baking dish. Spoon mashed potato mixture into baking dish, covering the meat layer. Sprinkle the remaining cheese on top.
Bake at 400°F for 25 to 30 minutes or until the top is golden brown. For a crispier top, let it stand under the broiler for a minute or two.