Meatballs: Place a large skillet over high heat. Once skillet is hot add oil. Add mushrooms and saute for 3 to 4 minutes. Add garlic and shallot and continue to saute for an additional 2 to 3 minutes. Lightly season with salt and pepper.
Stir in basil and oregano and remove mixture from heat. Set aside and allow mixture to cool, about 10 minutes.
Pour mushroom mixture and remaining meatball ingredients into a food processor and pulse until mixture comes together (8 to 12 pulses).
Form 1 to 1 ½ tablespoon sized balls with the mixture and set onto a parchment lined baking sheet. Refrigerate meatballs for about 30 minutes.
Remove meatball from refrigerator. Place large skillet over medium heat and add remaining oil. Add meatballs to skillet and sear on each side for 2 to 3 minutes. Remove from heat and lightly season, if needed.
Mashed Potatoes: Place potatoes in a large pot and fill with water until potatoes are completely submerged.
Place over high heat and boil until potatoes are fork tender, 15 to 20 minutes. Drain and return potatoes back to the pot. Add butter and nut milk and mash until smooth. Season with salt and pepper.
Gravy: Place a small pot over medium heat and melt butter. Add garlic and saute for 1 minute. Add flour and onion powder and whisk together. Slowly add stock, while whisking until fully incorporated and no lumps remain. Add soy sauce and season with salt and pepper. Boil gravy for 5 to 7 minutes or until thick enough to coat the back of a wooden spoon.
Assemble: Scoop mashed potatoes into a large bowl and top with meatballs. Drizzle gravy over entire dish. Top with fresh thyme leaves, if using. Serve.