Preheat oven to 350 degrees F.
Heat olive oil in skillet over medium heat.
Add ground meat to heated skillet and cook until browned.
Bring a pot of water to a boil. Add salt and potatoes once boiling and cook until fork tender.
Remove ground meat and place all vegetables (except spinach), seasonings, and minced garlic in skillet and saute until tender.
If using spinach, add once the other vegetables are tender and allow to wilt for about 1 minute.
Add ketchup, Worcestershire sauce, and beef broth. Bring to simmer and allow to simmer for 5 minutes.
Add water and flour and stir to combine. This will allow sauce to thicken. Continue simmering covered for 15 minutes.
While filling is simmering, drain potatoes and add them to a bowl with the butter and milk.
Using a hand mixer or potato masher, combine potatoes, milk, and butter until desired consistency. We love creamy mashed potatoes for this meal which is best achieved with the hand mixer.
Add salt and pepper to taste to the mashed potatoes.
If filling was made in an oven safe dish like cast iron, place the potatoes directly on top of the mixture and top with shredded cheese if desired, then place in the oven for 20 minutes. If the filling is not in an oven safe dish just transfer it to one and then top it.
Bake for 20 minutes, let cool for 10 minutes and then enjoy!