I was twenty-five before I realized shepherd’s pie wasn’t supposed to come from a frozen box. Growing up, that’s all we ever had. My mom would pop one in the oven, and I thought it was pretty good.
Then I made it from scratch for the first time, and wow—what a difference. Real ground meat, fresh vegetables, and creamy mashed potatoes you make yourself. The frozen stuff suddenly tasted like cardboard. Sure, homemade takes more time, but it’s not hard at all, and your family will definitely notice the difference.

Why You’ll Love This Shepherd’s Pie
- Classic comfort food – This homemade shepherd’s pie brings all the cozy flavors you crave, with layers of savory meat, vegetables, and creamy mashed potatoes that make it the perfect family dinner.
- Make-ahead friendly – You can assemble this dish earlier in the day or even the night before, then just pop it in the oven when you’re ready to eat.
- Complete meal in one dish – With protein, vegetables, and potatoes all baked together, you get a balanced dinner without needing to prepare multiple side dishes.
- Freezer-friendly leftovers – This recipe makes great leftovers that freeze well, so you can portion out individual servings for busy weeknight dinners later.
- Simple ingredients – Made with everyday ingredients like ground beef, frozen vegetables, and basic seasonings that you probably already have in your kitchen.
What Kind of Ground Beef Should I Use?
For shepherd’s pie, 90% lean ground beef is your sweet spot – it gives you enough fat for flavor without making your filling greasy. You could also swap in ground lamb if you want to go the traditional route, since shepherd’s pie was originally made with lamb (when it’s made with beef, it’s technically called cottage pie, but don’t worry about that too much). If you only have 80% lean ground beef on hand, just drain off any excess fat after browning to keep your filling from getting too oily. Ground turkey or chicken can work too if you prefer a lighter option, though you might want to add a bit more seasoning since they’re milder in flavor.

Options for Substitutions
This classic shepherd’s pie is pretty forgiving when it comes to swaps and substitutions:
- Ground beef or lamb: Traditional shepherd’s pie uses ground lamb, but ground beef works perfectly fine. You can also try ground turkey or chicken for a lighter version – just add an extra tablespoon of olive oil since these meats are leaner.
- Russet potatoes: Yukon gold potatoes make excellent mashed potatoes too and will give you a creamier texture. Avoid waxy potatoes like red potatoes as they don’t mash as well.
- Half & half: You can use whole milk, heavy cream, or even butter and milk mixed together. For a lighter option, try unsweetened almond milk or regular milk.
- Frozen mixed vegetables: Fresh vegetables work great too – just sauté them a bit longer. You can swap in green beans, diced carrots, or whatever vegetables your family enjoys.
- Beef broth: Chicken or vegetable broth will work in a pinch, though beef broth gives the richest flavor. You can also use red wine mixed with water for extra depth.
- Parmesan cheese: Cheddar cheese, gruyere, or even cream cheese will work for the potato topping. Skip it entirely if you prefer – the potatoes will still taste great.
Watch Out for These Mistakes While Cooking
The biggest mistake people make with shepherd’s pie is creating a watery filling that seeps through the mashed potatoes – make sure to cook off excess moisture from your ground beef and let the flour-thickened mixture simmer until it coats the back of a spoon.
Another common error is using potatoes that are too wet for the topping, so drain them well after boiling and let them sit for a minute before mashing to avoid a runny consistency that won’t hold its shape.
Don’t skip browning your ground beef properly either – gray, steamed meat will make your filling taste bland, so cook it in batches if needed to get a nice brown color.
For the best results, let your mashed potatoes cool slightly before spreading them on top, and use a fork to create ridges on the surface – these little peaks will turn golden brown and give you those crispy bits everyone loves.

What to Serve With Shepherd’s Pie?
Shepherd’s pie is pretty much a complete meal on its own, but I love serving it with a simple side salad to cut through all that rich, creamy goodness. A basic mixed greens salad with a light vinaigrette works perfectly, or you could go with a classic Caesar salad if you want something a bit more substantial. Some crusty dinner rolls or warm biscuits are great for soaking up any extra gravy from the bottom of the dish. For a lighter option, steamed green beans or roasted Brussels sprouts add a nice fresh contrast to the hearty meat and potato layers.
Storage Instructions
Refrigerate: Shepherd’s pie is one of those dishes that actually tastes better the next day! Cover your baking dish tightly with foil or transfer portions to airtight containers and keep in the fridge for up to 4 days. The flavors really meld together beautifully overnight.
Freeze: This freezes like a dream and makes meal planning so much easier. You can freeze the whole assembled pie before baking, or freeze individual portions after cooking. Wrap tightly in plastic wrap and foil, and it’ll keep for up to 3 months in the freezer.
Reheat: To warm up leftovers, cover with foil and bake at 350°F for about 20-25 minutes until heated through. If reheating from frozen, thaw overnight in the fridge first, then add an extra 10-15 minutes to the heating time. You can also microwave individual portions, but the oven gives you that nice crispy top again.
| Preparation Time | 20-30 minutes |
| Cooking Time | 40-60 minutes |
| Total Time | 60-90 minutes |
| Level of Difficulty | Medium |
Estimated Nutrition
Estimated nutrition for the whole recipe (without optional ingredients):
- Calories: 1850-2050
- Protein: 80-90 g
- Fat: 110-125 g
- Carbohydrates: 140-160 g
Ingredients
For the meat base:
- 2 tbsp olive oil
- 1 cup diced yellow onion
- 1 lb ground beef or ground lamb, 90% lean
- 2 tsp dried parsley
- 1 tsp dried rosemary
- 1 tsp dried thyme
- 1/2 tsp salt
- 1/2 tsp ground black pepper
- 1 tbsp worcestershire sauce
- 2 garlic cloves, finely minced
- 2 tbsp all-purpose flour
- 2 tbsp tomato paste
- 1 cup beef stock
- 1 cup frozen peas and carrots, mixed
- 1/2 cup frozen corn kernels
For the potato topping:
- 1 1/2 to 2 lb russet potatoes (about 2 large), peeled and cubed
- 8 tbsp unsalted butter
- 1/3 cup half and half
- 1/2 tsp garlic powder
- 1/2 tsp salt
- 1/4 tsp ground black pepper
- 1/4 cup grated parmesan cheese
Step 1: Sauté the Onions and Brown the Meat
- 2 tbsp olive oil
- 1 cup diced yellow onion
- 1 lb ground beef or ground lamb, 90% lean
- 2 tsp dried parsley
- 1 tsp dried rosemary
- 1 tsp dried thyme
- 1/2 tsp salt
- 1/2 tsp ground black pepper
Heat 2 tablespoons of olive oil in a large skillet over medium-high heat for about 2 minutes.
Add the diced yellow onion and cook for 5 minutes, stirring occasionally until the onion is softened.
Add the ground beef or ground lamb to the skillet, breaking it apart with a wooden spoon.
Stir in the dried parsley, dried rosemary, dried thyme, 1/2 teaspoon salt, and 1/2 teaspoon ground black pepper.
Cook this mixture for 6-8 minutes, stirring occasionally, until the meat is thoroughly browned.
Step 2: Build the Shepherd’s Pie Filling
- 1 tbsp Worcestershire sauce
- 2 garlic cloves, finely minced
- 2 tbsp all-purpose flour
- 2 tbsp tomato paste
- 1 cup beef stock
- 1 cup frozen peas and carrots, mixed
- 1/2 cup frozen corn kernels
To the browned meat mixture, add Worcestershire sauce and minced garlic, stirring well.
Cook for 1 minute to let the flavors meld.
Then, add the all-purpose flour and tomato paste, mixing until no clumps remain.
Pour in the beef stock, followed by the frozen peas and carrots and frozen corn kernels.
Bring the mixture up to a boil, then reduce to a simmer.
Allow it to simmer gently for 5 minutes, stirring occasionally.
Once done, set the meat filling aside.
I like to sprinkle a tiny extra splash of Worcestershire sauce for a deeper umami flavor, but that’s just a personal touch.
Step 3: Cook and Prep the Potatoes
- 1 1/2 to 2 lb russet potatoes (about 2 large), peeled and cubed
Place the peeled and cubed russet potatoes into a large pot.
Cover them completely with water and bring it to a boil over high heat.
Once boiling, reduce to a simmer and cook the potatoes until they are fork tender, about 10-15 minutes.
When cooked, drain the potatoes in a colander, then immediately return them to the hot pot.
Let them rest in the pot for 1 minute to allow excess moisture to evaporate.
This helps give the mashed potatoes a fluffier texture.
Step 4: Mash and Flavor the Potatoes
- 8 tbsp unsalted butter
- 1/3 cup half and half
- 1/2 tsp garlic powder
- 1/2 tsp salt
- 1/4 tsp ground black pepper
- 1/4 cup grated parmesan cheese
- cooked potatoes from Step 3
While the potatoes are still hot, add the unsalted butter, half and half, garlic powder, 1/2 teaspoon salt, and 1/4 teaspoon ground black pepper.
Mash the potatoes thoroughly using a potato masher until smooth and creamy, then stir until everything is well combined.
Finally, add the grated parmesan cheese and stir it in until evenly distributed.
For even richer mashed potatoes, I sometimes add a splash more half and half or use room temperature butter so it melts in smoothly.
Step 5: Assemble and Bake the Shepherd’s Pie
- meat mixture from Step 2
- mashed potatoes from Step 4
Preheat your oven to 400°F (204°C).
Transfer the meat filling from Step 2 into a 9×9 or 7×11 inch baking dish, spreading it out into an even layer.
Spoon the mashed potatoes from Step 4 over the meat, then carefully spread them out with a spatula or the back of a spoon to fully cover the filling.
If your dish seems very full, set it on a rimmed baking sheet to catch any possible spillover.
Bake the shepherd’s pie uncovered for 25-30 minutes until the top is lightly browned and the filling is bubbling at the edges.
Let it cool for 15 minutes before serving—this resting time makes it easier to slice and helps the flavors settle.

Savory Homemade Shepherd's Pie
Ingredients
For the meat base:
- 2 tbsp olive oil
- 1 cup diced yellow onion
- 1 lb ground beef or ground lamb, 90% lean
- 2 tsp dried parsley
- 1 tsp dried rosemary
- 1 tsp dried thyme
- 1/2 tsp salt
- 1/2 tsp ground black pepper
- 1 tbsp Worcestershire sauce
- 2 garlic cloves, finely minced
- 2 tbsp all-purpose flour
- 2 tbsp tomato paste
- 1 cup beef stock
- 1 cup frozen peas and carrots, mixed
- 1/2 cup frozen corn kernels
For the potato topping:
- 1 1/2 to 2 lb russet potatoes (about 2 large), peeled and cubed
- 8 tbsp unsalted butter
- 1/3 cup half and half
- 1/2 tsp garlic powder
- 1/2 tsp salt
- 1/4 tsp ground black pepper
- 1/4 cup grated parmesan cheese
Instructions
- Heat 2 tablespoons of olive oil in a large skillet over medium-high heat for about 2 minutes. Add the diced yellow onion and cook for 5 minutes, stirring occasionally until the onion is softened. Add the ground beef or ground lamb to the skillet, breaking it apart with a wooden spoon. Stir in the dried parsley, dried rosemary, dried thyme, 1/2 teaspoon salt, and 1/2 teaspoon ground black pepper. Cook this mixture for 6-8 minutes, stirring occasionally, until the meat is thoroughly browned.
- To the browned meat mixture, add Worcestershire sauce and minced garlic, stirring well. Cook for 1 minute to let the flavors meld. Then, add the all-purpose flour and tomato paste, mixing until no clumps remain. Pour in the beef stock, followed by the frozen peas and carrots and frozen corn kernels. Bring the mixture up to a boil, then reduce to a simmer. Allow it to simmer gently for 5 minutes, stirring occasionally. Once done, set the meat filling aside. I like to sprinkle a tiny extra splash of Worcestershire sauce for a deeper umami flavor, but that's just a personal touch.
- Place the peeled and cubed russet potatoes into a large pot. Cover them completely with water and bring it to a boil over high heat. Once boiling, reduce to a simmer and cook the potatoes until they are fork tender, about 10-15 minutes. When cooked, drain the potatoes in a colander, then immediately return them to the hot pot. Let them rest in the pot for 1 minute to allow excess moisture to evaporate. This helps give the mashed potatoes a fluffier texture.
- While the potatoes are still hot, add the unsalted butter, half and half, garlic powder, 1/2 teaspoon salt, and 1/4 teaspoon ground black pepper. Mash the potatoes thoroughly using a potato masher until smooth and creamy, then stir until everything is well combined. Finally, add the grated parmesan cheese and stir it in until evenly distributed. For even richer mashed potatoes, I sometimes add a splash more half and half or use room temperature butter so it melts in smoothly.
- Preheat your oven to 400°F (204°C). Transfer the meat filling from Step 2 into a 9x9 or 7x11 inch baking dish, spreading it out into an even layer. Spoon the mashed potatoes from Step 4 over the meat, then carefully spread them out with a spatula or the back of a spoon to fully cover the filling. If your dish seems very full, set it on a rimmed baking sheet to catch any possible spillover. Bake the shepherd’s pie uncovered for 25-30 minutes until the top is lightly browned and the filling is bubbling at the edges. Let it cool for 15 minutes before serving—this resting time makes it easier to slice and helps the flavors settle.