Preheat oven to 180 °C (350 °F). Cook macaroni according to package directions until just al dente. Drain and set aside.
In a large skillet, heat olive oil over medium heat. Add ground meat, season with salt and pepper, and cook until browned, breaking it up as it cooks. Drain excess fat if needed.
Add chopped onion and cook 4–5 minutes until softened. Stir in garlic, chili powder, cumin, and smoked paprika; cook 1–2 minutes until fragrant.
Stir in diced tomatoes, beans, broth, and tomato paste. Bring to a simmer and cook 5–7 minutes to thicken slightly.
In a separate saucepan, melt butter over medium heat. Whisk in flour to make a roux and cook 1 minute. Gradually whisk in milk until smooth and thickened. Stir in grated cheddar until melted and sauce is creamy. Season with salt and pepper.
Combine cooked pasta, chili mixture, and cheese sauce in a large bowl or casserole dish; stir gently to coat.
Transfer mixture to a baking dish. Sprinkle extra cheddar on top.
Bake for 20–25 minutes until cheese is bubbly and golden brown.
Let rest 5 minutes before serving. Top with jalapeños, cilantro, or sour cream as desired.
Notes
Use ground turkey or a meat substitute for a lighter or vegan version.
Make it ahead: assemble and refrigerate, then bake when ready.
Stir in chopped bell pepper or corn for extra veggies.
Store leftovers covered in the fridge for up to 4 days or freeze in portions.