Place the cubed potatoes in a pot, cover with water, and bring to a boil. Cook until fork-tender, about 12 minutes, then drain.
While the potatoes cook, heat a large skillet over medium heat. Add the ground beef and cook until browned, breaking it up as it cooks.
Add the onion, garlic, carrots, parsnip, and thyme to the skillet. Cook for 5 minutes until the vegetables start to soften.
Sprinkle the flour over the beef mixture and stir for 1 minute. Slowly pour in the beef broth while stirring to create a gravy.
Season with salt and pepper, then simmer the filling for 8 minutes until the vegetables are tender and the mixture thickens.
Mash the drained potatoes with butter and milk until smooth. Season with a pinch of salt.
Spread the beef filling in a baking dish and spoon the mashed potatoes evenly over the top. Bake at 400°F for 20 minutes until the potato crust turns lightly golden.