Cook 8 oz. macaroni according to package directions until al dente (about 7-8 minutes). Drain well and set aside.
In a medium pot over medium heat, melt 3 Tbsp butter. Whisk in 3 Tbsp all-purpose flour and cook for 1 minute, stirring constantly, to create a roux.
Gradually whisk in 2 cups whole milk, a few tablespoons at a time, ensuring each addition thickens before adding more. Continue whisking until the sauce gently simmers and thickens to the consistency of heavy cream, about 5-7 minutes.
Remove the pot from heat. Stir in 2 cups shredded sharp cheddar cheese and 1 cup shredded Gruyère cheese until completely melted and smooth.
Season the cheese sauce with ½ tsp onion powder, ½ tsp garlic powder, ½ tsp paprika, ¾ tsp salt, ¼ tsp black pepper, and ½ tsp hot sauce. Stir well to combine all seasonings.
Add the drained macaroni to the cheese sauce and stir until every piece is evenly coated. Serve immediately and enjoy your extra cheesy homemade mac and cheese!