Skip to Content

How to make the ultimate macaroni cheese

Here’s how to make the ultimate macaroni cheese – with a super flavourful cheesy sauce and perfectly crispy topping!

Large dish of macaroni cheese with a crispy topping, with a portion removed with a spoon

You know I’m a fan of cheesy pasta. There’s no greater combination on the planet.

Usually when I make cheesy pasta, I try to add some extra nutrition somehow – blending beans into a creamy pasta sauce, including plenty of veggies alongside all that indulgence… but sometimes it’s just nice to spoil yourself with a big bowl of gooey, cheesy pasta without worrying about all that. It’s not a dish to eat when you’re on a diet, and it’s not a dish to eat when you’re in need of a healthy, balanced meal with lots of vegetables… but it is a dish to eat when you just want to treat yourself.

So here’s my recipe for the ultimate macaroni cheese. It’s absolutely perfect – just right for these cold, wintery evenings.

Portion of macaroni cheese on a plate with salad and garlic bread

What pasta should I use for macaroni cheese?

Obviously macaroni cheese is traditionally made with macaroni (it’s kind of in the name!), and that’s what I used here, but you definitely don’t have to stick to macaroni if you feel like using something different. I don’t often have macaroni in the cupboards, so I usually use a bigger pasta.

Ideally, you want to use a pasta shape that will hold the sauce and maximise cheesiness in every bite. Spaghetti’s not a great option, for example – the sauce will just slide right off it. Pasta shapes that are hollow (e.g. penne) or ones that have ridges (e.g. fusilli) are great for holding that sauce!

Once you’ve chosen your pasta, just boil  it up in plenty of water until it’s cooked al dente. It will cook a little more in the oven, so don’t overdo it.

Collage showing white sauce being cooked and mixed with pasta

Next, the creamy sauce!

Since this macaroni cheese is simple, we want to do it right – we need to get as much flavour into that creamy sauce as we can. I always start by cooking off some finely chopped onion and garlic. You don’t consciously notice them in the finished dish, but they add a lovely flavour to the creamy sauce. I also add a bay leaf or two, and a pinch of nutmeg. You’d be amazed at how much flavour these little extras can impart – they transform a classic white sauce into something really tasty.

You can cook your white sauce right on top of those sautéed onions – just make a simple roux (butter + flour), and add milk until you have a thick, glossy sauce.

Creamy macaroni cheese in a large frying pan

What cheese should I add?

For the ultimate macaroni cheese, I like to use at least two different cheeses, since they all bring something different to the table. At minimum, I like to use a mixture of mature cheddar and mozzarella. The mature cheddar adds tons of flavour, and the mozzarella adds that irresistible gooeyness to the sauce.

Ideally, you need to buy your cheeses in a block and grate them yourself – or, for mozzarella, buy a ball of the fresh stuff and tear it into chunks. Pre-grated cheese has a coating on it (usually potato starch) to stop it from clumping together, which can affect how the cheese melts. It’s fine to use if that’s all you have, but for the perfect macaroni cheese, grate it yourself! This is no time to be lazy – we’re aiming for perfection here.

Large dish of macaroni cheese with a crispy topping, with a portion removed

Do I need to bake macaroni cheese?

In short, no, but also yes. Macaroni cheese is totally delicious without being baked – just mix the cooked pasta through the sauce, let it simmer for a couple of minutes to make sure it’s hot, and then serve. Yum.

Buuut, it’s even better if you bake it in the oven for a while. Add some more cheese and some breadcrumbs on top, and bake it until it’s nice and crispy. This way you get the best of both worlds – you still get the gooey, saucy bit underneath, but you get that crispy cheese as well. Heaven.

This recipe makes a nice big batch of macaroni cheese – it should feed 6 people (or probably more like 10 if you’re serving it as a side dish rather than a full meal). If you’re only cooking for a couple of people, and you can’t stand the thought of eating this for a few nights running (which, let’s face it, seems unlikely), you can easily halve the recipe, or just freeze any leftovers.

Portion of macaroni cheese on a plate with garlic bread and salad

What else can I add to my macaroni cheese?

This recipe is for a simple, but amazing macaroni cheese. But as I mentioned before, I do often add extra bits and pieces to my cheesy pasta. Here are a few examples of ways you could jazz up this classic macaroni cheese recipe to make it a bit different:

– sprinkle the top with pumpkin seeds, sunflower seeds, sesame seeds etc. for an extra crunchy topping
– add chopped sun-dried tomatoes, olives, and artichokes for a Mediterranean-inspired flavour
– stir through some roasted vegetables before baking for heaps of extra flavour
– throw some frozen veggies in to boil with the pasta to add nutrition with no extra effort
– blend up a tin of white beans and stir it through the white sauce for added protein
– try adding different cheeses – blue cheese, crumbled feta, smoked cheddar, etc.
– bake your macaroni cheese across a couple of shallow dishes to maximise surface area for that crispy topping!

As you can see, there are all sorts of ways to personalise your dinner – but this ultimate macaroni cheese recipe is definitely a good place to start!

Portion of macaroni cheese on a plate with garlic bread and salad

Print Recipe
5 from 9 votes

Ultimate macaroni cheese

My ultimate macaroni cheese recipe - it's simple, but has so much flavour! You can't beat gooey, creamy pasta with a crispy cheese topping.
Prep Time20 mins
Cook Time30 mins
Total Time50 mins
Course: Main Course
Cuisine: Italian
Servings: 6 people
Calories: 804kcal
Author: Becca Heyes


  • 600 g (~ 1 1/3 lb / ~ 3 1/2 cups) uncooked macaroni
  • 4 tbsp butter, divided
  • 1 tbsp oil
  • 1 large onion, finely diced
  • 3 cloves garlic, minced
  • 3 tbsp plain flour
  • 750 ml (~ 3 cups) milk
  • 2 small bay leaves
  • 1/4 tsp ground nutmeg
  • Salt
  • Black pepper
  • 300 g mature cheddar cheese, grated (~ 3 cups when grated)
  • 100 g fresh mozzarella cheese, torn into a few chunks (~ 2/3 cup when torn up)
  • 4 tbsp dried breadcrumbs
  • 1 tsp dried parsley, to garnish (optional)


  • Boil the pasta in plenty of water until cooked al dente. Drain, and set aside (don't worry if it sticks together a little as it cools - it will be fine once you stir it into the sauce!).
  • While the pasta is cooking, prepare the sauce. Melt 1tbsp butter in a large frying pan with a dash of oil, and add the finely chopped onion and garlic. Cook over a medium-low heat for 5-10 minutes, stirring regularly, until soft and translucent (you don't want it to brown).
  • Add the remaining butter to the pan with the onions, and once it has melted, add the flour. Mix well to form a roux - it should be a thick paste. Cook for a minute or so, stirring constantly, then add a dash of milk (half a cup or so). Mix well until all the milk has become incorporated, then add some more. Add the bay leaves, and continue to add the milk a little at a time until you end up with a smooth sauce (apart from the small lumps of onion!). Simmer the sauce for a few minutes until it has thickened slightly, and add the nutmeg and a generous amount of salt and pepper.
  • Add the cheese to the sauce (hold back a bit of the cheddar for topping), and mix to combine. Cook for a few more minutes until the cheese has completely melted. Find the bay leaves, and discard them.
  • Add the cooked pasta, and mix to combine. Transfer the mixture into a large baking dish (mine was a deep dish that measured around 11 x 9 inches), and sprinkle over the remaining cheddar and the breadcrumbs. Bake at 190°C (Gas Mark 5 / 375°F) for around 30 minutes, or until the topping has crisped up to your liking.
  • Garnish with a little dried parsley if desired!


Nutrition Facts
Ultimate macaroni cheese
Amount Per Serving (1 portion)
Calories 804 Calories from Fat 302
% Daily Value*
Fat 33.5g52%
Saturated Fat 19.1g96%
Cholesterol 92mg31%
Sodium 564mg24%
Potassium 415mg12%
Carbohydrates 91.2g30%
Fiber 4.2g17%
Sugar 10.3g11%
Protein 33.7g67%
Calcium 470mg47%
Iron 4.3mg24%
* Percent Daily Values are based on a 2000 calorie diet.


Note: Nutritional information is approximate, and will depend on exactly what ingredients you choose. Information above is for 1/6 of the recipe.

Want a slightly lighter tasting pasta dish, that’s quicker to make too? Try my lemon and artichoke pasta!

Carrot and white bean veggie cutlets
← Previous
50 vegetarian Christmas dinner recipes
Next →
Recipe Rating