In a large pot, boil water and cook the pasta al dente, or as per package instructions.
In a large skillet or pot over medium heat, add the olive oil and fry the ground beef until fully cooked.
Sprinkle flour over the beef and cook until it has browned bits.
Add carrots and onions, and cook until softened.
Add garlic powder, onion powder, Worcestershire sauce, ½ salt, black pepper, and cayenne pepper (if using). Stir to combine well, taste and adjust salt, up to another ½ tsp, if necessary.
Make a hole in the center of the beef mixture and add the tomato paste to the bottom of the pan. Cook until the paste loses its raw taste, then mix it into the beef and vegetables.
Pour in the canned tomatoes, crush them with a wooden spoon if necessary, and mix them into the beef.
Simmer over medium heat for about 10 minutes, or until the tomatoes have softened completely.
Once the pasta is done, rinse it with cold water, and add them to the baking dish.
Add the yogurt and Italian seasoning, and mix well to coat the pasta evenly.
When the beef and tomato mixture is done cooking, layer it over the pasta.
In a small bowl, combine the cheddar and mozzarella, and sprinkle it over the beef.
Place the baking dish in the oven, and bake for 20 to 25 minutes, or until the cheese has melted. For the last 3 to 5 minutes, turn on the oven’s fan or broil setting, so that the cheese browns a bit.
Remove from the oven, and let the casserole cool for a few minutes before slicing into servings.
Garnish with green onions, and serve hot, with a homemade salad of your choice, or mashed potatoes.