In a large heavy pot, preferably a dutch oven, add the canola oil on medium heat. Once hot, add in the onion, carrots, and celery. Occasionally stirring until they begin to soften, about 3 minutes. Add in the garlic and stir until fragrant, about another minute.
Add in ground beef and using a wooden spoon, break up the beef into small pieces as it cooks all the way through. Once cooked, sprinkle flour over top and mix until combined.
Add in tomato paste, beef broth, and Worcestershire sauce. Mix until the tomato paste is well incorporated.
Add in salt, pepper, fresh rosemary, and fresh thyme. Let simmer on the lowest heat setting partially covered while you make the mashed potato topping.
Preheat oven to 400 degrees.
For the potatoes, peel and cut them into about 1-2 inch cubes. Place in a large pot and cover with water. Bring to a boil and then lower heat a little to let them simmer until a fork easily pokes through them, about 15 minutes. Drain the potatoes and add in cashew milk and butter and whip them with an electric mixer until there are no clumps. Season with salt until you're liking.
Uncover the beef filling and increase heat a little bit (still keeping it on low). Add in brown sugar and frozen peas. Stir until peas are warm.
Transfer beef filling to a heat safe dish, I used my cast iron skillet. Use the back of a wooden spoon to make sure the filling is evenly spread. Now top with the mashed potatoes and again make sure it's evenly spread. I like to give it one good back and forth motion with the back of a spoon across the entire top of the dish to create some texture (see photos below).
Bake for 20 minutes. Let cool for 2-3 minutes before serving (optional: top with parsley) and enjoy1