FOR THE MACARONI AND CHEESE:
1 pound elbows, shells, cavatappi, farfalle, fusilli or other short, tube-shaped pasta
4 tablespoons unsalted butter
1/4 cup all-purpose flour
4 cups whole milk
1 clove garlic, finely grated
1 teaspoon smoked or hot paprika
Freshly ground pepper
12 ounces sharp or white Cheddar cheese, grated
12 ounces fontina or Gruyère, grated
FOR THE TOPPING (OPTIONAL):
1 cup coarse bread crumbs or panko
4 tablespoons melted butter or olive oil
1/4 cup finely grated Parmesan cheese (optional)
Kosher salt and freshly ground pepper
Cook pasta in a large pot of salted boiling water until it’s barely al dente. (It should be more al dente than your average pasta: It’s going to continue to cook in the oven.) Drain and set aside.
Meanwhile, heat butter in a medium pot over medium heat. (The pot should be large enough to hold all the pasta when cooked.) Whisk in flour and cook, whisking constantly, until the flour is foamy and just starting to turn a light golden brown, about 4 minutes. Slowly whisk in milk to avoid clumping. Add garlic, paprika and season with salt and pepper. Bring to a simmer, whisking constantly and paying special attention to the edges of the pot to make sure the flour mixture is totally incorporated.
Add grated cheese and whisk to blend until the cheese is completely melted. (The sauce will seem thick at first and thin out as the cheese melts; it will thicken while it bakes.) Season with salt and pepper and add cooked pasta, stirring to coat well.
Heat oven to 425 degrees. Line a rimmed baking sheet with aluminum foil (to catch any cheesy drips).
Make the optional topping: Combine bread crumbs, melted butter and Parmesan, if using, in a medium bowl. Season with salt and pepper and, using your hands, mix well to ensure the bread crumbs are evenly coated.
Transfer the macaroni and cheese mixture to a 3-quart or 9 x 13 baking dish and scatter bread crumbs, if using, evenly over the top. Place on prepared baking sheet and bake until macaroni and cheese is bubbling, thickened and creamy, and bread crumbs are evenly golden brown, 25 to 30 minutes. Let cool slightly before serving.