Preheat oven to 375°F and lightly grease a loaf pan or small baking dish.
In a skillet, heat olive oil over medium heat. Add diced onion and cook for 8 to 10 minutes until soft and golden. Add garlic and cook 30 seconds.
Remove half of the onion mixture and let cool slightly.
In a large bowl, mix ground beef, cooled onion mixture, breadcrumbs, eggs, milk, 1 tablespoon Worcestershire sauce, ketchup, salt, black pepper, garlic powder, and onion powder until just combined.
Shape into a loaf and place in the prepared dish. Bake for 40 minutes.
While it bakes, add butter to the skillet with the remaining onions. Stir in flour and cook for 1 minute. Slowly whisk in beef broth and 1 teaspoon Worcestershire sauce. Simmer 3 to 5 minutes until thickened.
Spoon some onion gravy over the meatloaf, top with cheese, and bake 10 to 15 minutes more until the meatloaf is cooked through and the cheese is melted.
Let rest 5 to 10 minutes before slicing. Spoon extra onion gravy over the top and garnish with parsley if using. Store leftovers in the fridge for up to 3 days.
