In a large pot, bring the chicken or vegetable broth to a boil. Add the elbow macaroni and cook according to package instructions until al dente. Drain and set aside.
In the same pot, melt the butter over medium heat. Stir in the flour and cook for about 1 minute, stirring constantly, until the mixture is bubbly and golden.
Gradually whisk in the milk, ensuring there are no lumps. Continue to cook, stirring frequently, until the mixture thickens, about 3-5 minutes.
Reduce the heat to low and add the cheddar cheese, mozzarella cheese, and Parmesan cheese. Stir until the cheeses are melted and the soup is creamy.
Add the cooked macaroni to the cheese mixture. Stir in the garlic powder, onion powder, paprika, salt, and pepper. Adjust seasoning to taste.
Let the soup simmer for an additional 5 minutes, allowing the flavors to meld together. If the soup is too thick, add a little more milk or broth to reach your desired consistency.
Serve hot, garnished with chopped fresh parsley if desired.