Preheat oven to 400°.
Place cubed potatoes in a large pot with just enough water to cover, plus a teaspoon of salt. Bring to a boil and cook until fork tender, about 15 minutes.
While the potatoes are cooking, start the meat filling. Melt the 3 tablespoons of butter in a large saucepan over medium-high heat. Add the onion and cook for 3 minutes. Add the garlic and cook for 1 more minute.
Add the ground beef to the pan with the onion and cook for 8 minutes, browning all over. Break it apart as you cook.
Stir in the thyme, rosemary, paprika, salt, and pepper.
Add in Worcestershire sauce and cook for 1-2 minutes.
Stir in the tomato paste and ketchup until combined and the beef is coated.
Sprinkle the flour over the beef filling and stir for 1 minute until its completely incorporated.
Slowly pour in the beef broth and bring the mixture to simmer. Reduce the heat to low and let simmer for 3-4 minutes. Pour the beef filling into a medium sized casserole dish.
Drain the potatoes in a strainer. Cut up the stick of butter and it to the potato pot. Pour the hot potatoes on top of the butter and cover with a lid and let sit of 1 minute to melt the butter.
Using a potato masher, mash the potatoes and the butter together until smooth, some chunks are fine. Sprinkle in the parmesan cheese, garlic powder, and salt. Mix well.
Spread the corn over the meat filling in the casserole.
Spread the mashed potatoes over the corn until flat and even. Using the tip of fork, rake the top of the potatoes to rough up the top layer and create little peaks. This will help the top layer to brown in the oven. Lightly sprinkle with some more paprika (optional).
Place casserole dish in the over and bake for 30 minutes. After 30 minutes, turn the broiler to high, and bake for an additional 2-3 minutes until the top is golden brown.
Allow the Shepherd's pie to cool for 15-20 minutes before serving.