Preheat your oven to 375°F (190°C). Slice the sandwich buns and spread butter on the cut sides. Toast them lightly in the oven for about 5-7 minutes or until golden brown.
In a large bowl, combine the ground beef, breadcrumbs, Parmesan cheese, parsley, egg, garlic, oregano, salt, and pepper. Mix until just combined, then form the mixture into 12-16 meatballs, depending on your preferred size.
Heat the olive oil in a large skillet over medium heat. Add the meatballs to the pan and cook until browned on all sides and cooked through, about 8-10 minutes. Remove from the skillet and set aside.
In the same skillet, melt the butter over medium heat. Stir in the flour and cook for 1-2 minutes to create a roux.
Gradually whisk in the beef broth, stirring constantly to avoid lumps. Add salt, pepper, garlic powder, and thyme, if using. Bring the gravy to a simmer and cook until it thickens, about 3-4 minutes.
Return the meatballs to the skillet and spoon the gravy over them. Simmer for another 5 minutes, allowing the meatballs to absorb some of the gravy.
To assemble the sandwich, place 3-4 meatballs on each toasted bun and drizzle with extra gravy. Serve hot.