Combine 1 tsp onion powder, 1 tsp garlic powder, 1 tbsp cumin powder, 1 tbsp paprika, 1 tbsp dried oregano, and ½ to 1 tsp cayenne pepper in a small bowl. Mix well and set aside.
Heat 2 tbsp olive oil in a large saucepan over medium heat. Add 3 tbsp flour and stir immediately to form a paste. Cook for 1 minute, stirring constantly.
Pour in ½ cup of the chicken stock and whisk vigorously right away until smooth and thick. Add the remaining 1½ cups chicken stock, the passata (or canned tomato sauce), ¼ tsp salt, ¼ tsp black pepper, and 2 tablespoons of the spice mix. Whisk to combine.
Increase heat to medium-high and cook for 3 to 5 minutes, whisking regularly, until the sauce thickens to the consistency of thick syrup. Remove from heat and set aside.
Preheat oven to 350°F (180°C).
Heat 1 tbsp olive oil in a large skillet over high heat. Add 2 minced garlic cloves and the finely chopped onion. Cook for 2 minutes, stirring.
Add 1 lb (500g) ground beef and cook for 2 minutes, breaking it apart as it browns. Add the remaining spice mix and cook for a further 2 minutes until the beef is completely cooked through.
Add the full can of refried beans (14oz / 400g), the drained black beans (14oz / 400g), and ¼ cup of the enchilada sauce. Season with a pinch of salt and pepper. Stir to combine and cook for 2 minutes. Remove from heat. If the refried beans are stiff and not stirring through easily, add a small splash of water to loosen them.
Smear a thin layer of enchilada sauce across the bottom of a baking dish. Place a scoop of beef filling onto the lower third of one tortilla, roll it up firmly, and place it seam-side down in the dish. Repeat with the remaining 7 tortillas and filling.
Pour the remaining enchilada sauce evenly over the rolled enchiladas. Scatter 1½ cups (150g) grated cheese on top. Cover the dish with foil or a baking tray and bake for 10 minutes. Uncover and bake for a further 10 minutes. Serve hot, garnished with fresh cilantro if desired.