Maggie wasn’t trying to impress anyone. I’d stopped by her place on a Tuesday to pick up a book I’d lent her months ago, and the smell hit me before I even got past the screen door. It was rich, savory, and a little bit nutty—the kind of smell that makes you forget why you showed up in the first place. I walked into her kitchen, and there it was: a bubbling dish of green bean casserole, but it didn’t look like any I’d seen before. The topping wasn’t that sad, uniform crunch from a can. It was real. It was golden and craggy, with actual fried shallots peeking through. She shrugged when she saw me staring. “Oh, that? Just threw it together. No big deal.” But it was a big deal, honestly. She made it look like nothing, and I stood there, mouth practically watering, trying to act cool.
That moment stuck with me. I mean, here was this classic Thanksgiving side dish, something I’d always associated with frantic holiday prep and cans of cream-of-whatever soup. And she just whipped it up on a random Tuesday like it was scrambled eggs. I asked her for the recipe, and she scribbled it on a napkin—no measurements, just a list of ingredients and a few scribbled notes. It took me a few tries to get it right, but once I did, I knew I’d never go back to the canned stuff. This version is everything you want from green bean casserole: creamy, savory, with that irresistible crunch on top. But it’s made from scratch, with real ingredients you can actually pronounce. Maybe you’ve been there, standing in the grocery aisle, staring at a can of soup and wondering if there’s a better way. There is. And it’s easier than you think.
Why You’ll Love This Recipe
Let’s be real for a second. I’ve tested a lot of green bean casserole recipes over the years, and most of them fall into one of two camps: the super convenient one that tastes like a chemistry experiment, or the “from scratch” one that takes three hours and dirties every dish you own. This recipe? It sits right in the sweet spot. It’s homemade, but it doesn’t ask you to spend your whole afternoon in the kitchen. I’ve made this for busy weeknights, for potlucks, and yes, for Thanksgiving—and it’s never let me down.
- Quick & Easy: You can have this on the table in about 45 minutes. No roux-making anxiety, no complicated steps. Just real food, fast.
- Simple Ingredients: You probably already have most of what you need in your pantry. Milk, butter, flour, green beans, mushrooms. Nothing weird or hard to find.
- Perfect for Weeknights and Holidays: This dish is flexible. It’s fancy enough for a holiday table but simple enough for a Tuesday dinner alongside a roasted chicken.
- Crowd-Pleaser: I’ve served this to kids, picky eaters, and full-on food snobs. Everyone goes back for seconds. The crunchy shallot topping is basically edible gold.
- Unbelievably Delicious: The homemade cream sauce is silky and rich, with deep mushroom flavor. The green beans stay tender-crisp. And that topping? It’s a game-changer.
What makes this recipe different from the rest is the technique. Instead of a heavy, gluey sauce, we’re building flavor by sautéing the mushrooms first to draw out their moisture and concentrate their taste. Then we make a quick roux and whisk in milk for a sauce that’s smooth and luxurious. The fried shallots on top are made from scratch too, but I’ll show you a shortcut that makes them almost as easy as opening a can. This isn’t just another version of green bean casserole—it’s the one that will make you forget the canned stuff ever existed.
Honestly, this recipe is the kind that makes you close your eyes after the first bite. It’s comfort food at its best—familiar, warm, and deeply satisfying. But it’s also something you can feel good about serving, because you made it yourself, with real ingredients. No shortcuts, no compromises. Just pure, honest flavor.
What Ingredients You Will Need
This recipe uses simple, wholesome ingredients to deliver bold flavor and satisfying texture without the fuss. Most of these are pantry staples, so you can probably make this casserole without a special trip to the store.
For the Casserole
- 1 ½ pounds fresh green beans, trimmed and cut into 2-inch pieces (look for firm, bright green beans—avoid any that are limp or blemished)
- 2 tablespoons unsalted butter (I prefer Kerrygold for its rich flavor, but any good butter works)
- 8 ounces cremini mushrooms, sliced (baby bella mushrooms have the best flavor for this, but white button mushrooms work too)
- 1 small yellow onion, finely diced (about ¾ cup)
- 3 cloves garlic, minced
- ¼ cup all-purpose flour (use a gluten-free blend if needed)
- 2 cups whole milk (2% works, but whole milk gives the creamiest sauce)
- 1 cup chicken or vegetable broth (low-sodium preferred so you can control the salt)
- ½ cup heavy cream (adds richness—don’t skip it!)
- 1 teaspoon salt, plus more to taste
- ½ teaspoon black pepper
- ¼ teaspoon nutmeg (trust me on this—it brightens the whole dish)
- ¼ teaspoon cayenne pepper (optional, for a tiny kick)
For the Crispy Shallot Topping

- 3 large shallots, thinly sliced into rings (about 1 cup)
- ⅓ cup all-purpose flour
- ½ teaspoon salt
- ¼ teaspoon black pepper
- Vegetable or canola oil, for frying (about 1 cup, enough for ½ inch depth in your pan)
If you’re short on time, you can use store-bought fried onions or shallots, but honestly, making them from scratch is so easy and the flavor is about a thousand times better. I usually make a double batch because they disappear fast—my kids eat them straight out of the bowl.
For the green beans, fresh is non-negotiable here. Frozen green beans will turn mushy, and canned are just sad. If you’re in a pinch, you can blanch the fresh beans a day ahead and store them in the fridge. For the mushrooms, I’ve tested this with both cremini and white button, and cremini win every time for their deeper, earthier flavor.
Equipment Needed
- Large pot for blanching the green beans (a 6-quart stockpot works great)
- Large skillet or sauté pan for the mushroom sauce (I use a 12-inch stainless steel pan)
- Small saucepan or skillet for frying the shallots
- 9×13-inch baking dish (or a 2.5-quart casserole dish)
- Sharp knife and cutting board for prepping the veggies
- Colander for draining the green beans
- Whisk for making the sauce (a flat whisk works best to prevent lumps)
- Slotted spoon for removing the fried shallots from the oil
- Paper towels for draining the shallots
If you don’t have a 9×13 dish, you can use a 10-inch cast iron skillet for the whole thing—just make the sauce in a separate pan and transfer everything to the skillet before baking. I’ve also used a 3-quart oval baking dish, and it works beautifully. For the frying, a heavy-bottomed pan is key to maintaining an even temperature. A Dutch oven works great if you have one.
Preparation Method
- Preheat your oven to 375°F (190°C). Get this going first so it’s ready when you are.
- Blanch the green beans. Bring a large pot of salted water to a rolling boil. Add the trimmed green beans and cook for exactly 3 minutes. You want them tender-crisp, not soft. Drain immediately and transfer to a bowl of ice water to stop the cooking. Let them sit for 2 minutes, then drain again and set aside. This step is crucial—it sets the color and keeps the beans from turning into mush later.
- Start the shallots. While the beans are blanching, heat about ½ inch of oil in a small saucepan over medium heat. In a shallow bowl, combine the flour, salt, and pepper. Toss the sliced shallots in the flour mixture until each ring is lightly coated. Shake off any excess. When the oil is hot (a piece of shallot should sizzle immediately when dropped in), fry the shallots in batches, making sure not to crowd the pan. Cook for 2-3 minutes, stirring occasionally, until golden brown. Use a slotted spoon to transfer them to a paper towel-lined plate. Sprinkle with a pinch of salt while they’re still warm. Set aside.
- Sauté the mushrooms and onions. In a large skillet, melt the butter over medium-high heat. Add the sliced mushrooms and cook without stirring for 3 minutes—let them get some color. Then stir and cook for another 2 minutes until they’re golden and have released their liquid. Add the diced onion and cook for 3-4 minutes until softened. Add the minced garlic and cook for 30 seconds until fragrant. Your kitchen should smell amazing at this point.
- Make the cream sauce. Sprinkle the flour over the mushroom mixture and stir constantly for 1 minute. This cooks out the raw flour taste. Slowly pour in the milk while whisking continuously to prevent lumps. Then add the broth, whisking until smooth. Bring the mixture to a gentle simmer—it should thicken in about 3-4 minutes. Stir in the heavy cream, salt, pepper, nutmeg, and cayenne if using. Taste and adjust seasoning. The sauce should be creamy and rich, not too thick. If it seems too thick, add a splash more milk.
- Combine everything. Add the blanched green beans to the skillet and stir until they’re fully coated in the sauce. Transfer the whole mixture to your prepared baking dish and spread it into an even layer.
- Bake the casserole. Place the dish in the preheated oven and bake for 20-25 minutes, until the sauce is bubbly around the edges and the top is lightly golden.
- Add the topping. Remove the casserole from the oven and sprinkle the fried shallots evenly over the top. Return to the oven and bake for another 5 minutes, just until the shallots are warmed through and extra crispy.
- Rest and serve. Let the casserole sit for 5 minutes before serving. This allows the sauce to set up slightly so it doesn’t run all over the plate. Trust me on this—I’ve learned the hard way that patience pays off here.
Cooking Tips & Techniques
I’ve made this casserole more times than I can count, and I’ve definitely had my share of mishaps. The first time I tried making it from scratch, I didn’t blanch the green beans long enough, and they were so crunchy they practically bounced off the plate. Then there was the time I forgot to whisk the sauce while adding the milk, and I ended up with lumpy gravy that looked like cottage cheese. Not my finest moment. But those failures taught me a few things that I’m happy to pass along.
Don’t skip the blanching step. I know it’s an extra pot to wash, but it makes a huge difference. If you add raw green beans directly to the sauce and bake, they’ll release water as they cook, making the sauce watery and thin. Blanching sets the color and texture perfectly. If you’re really short on time, you can blanch the beans up to two days ahead and store them in the fridge.
Toast your mushrooms properly. Most people crowd the pan and end up steaming the mushrooms instead of browning them. Give them space! Cook them in a single layer and don’t stir for the first few minutes. You want that deep golden color—it’s where all the flavor lives.
Watch your heat when making the sauce. Medium heat is your friend. Too high and the milk will scorch. Too low and it won’t thicken properly. I keep the heat at medium and whisk constantly, especially during the first minute after adding the milk. And here’s a tip I learned from a chef friend: if your sauce does get lumpy, don’t panic. Pour it through a fine-mesh strainer and whisk it back together. It’ll be smooth as silk.
Make the shallots ahead. The fried shallots can be made up to three days in advance and stored in an airtight container at room temperature. Just don’t add them to the casserole until the very end, or they’ll get soggy. I’ve made that mistake, and it’s heartbreaking to see those crispy beauties turn limp.
Multitask like a pro. While the green beans are blanching, you can slice the shallots and mix the flour coating. While the shallots are frying, sauté the mushrooms. The whole thing comes together in about 45 minutes, and most of that is hands-off oven time.
Variations & Adaptations
One of the best things about this recipe is how flexible it is. I’ve played around with it quite a bit over the years, and here are a few versions I’ve tried and loved.
Make it gluten-free: Swap the all-purpose flour for a 1:1 gluten-free flour blend in both the sauce and the shallot coating. I’ve used Bob’s Red Mill with great results. The sauce might be slightly thinner, but it still tastes incredible.
Add some protein: Sometimes I turn this into a main dish by adding shredded rotisserie chicken or cooked bacon. Stir in about 1 ½ cups of shredded chicken right before baking, or sprinkle crumbled bacon over the top along with the shallots. It transforms the casserole into a complete meal.
Go dairy-free: Use olive oil instead of butter, and swap the milk and cream for unsweetened oat milk or full-fat coconut milk. Coconut milk adds a subtle sweetness that’s actually lovely with the mushrooms. I’ve served this to dairy-free guests and they couldn’t tell the difference.
Seasonal swap: In the summer, I sometimes use asparagus instead of green beans. Just blanch it for 2 minutes instead of 3, and follow the rest of the recipe exactly. It’s a fresh, bright twist that works beautifully.
Spice it up: If you like a little heat, add a diced jalapeño to the mushroom sauté, or stir in ½ teaspoon of red pepper flakes with the garlic. The cayenne in the sauce gives a subtle warmth, but you can dial it up if you’re feeling adventurous.
Make it ahead: This casserole is a lifesaver for busy days. Assemble it completely (minus the shallot topping), cover it, and refrigerate for up to 24 hours. When you’re ready to bake, add 10 minutes to the baking time since it’s starting from cold. Add the shallots in the last 5 minutes as usual.
Serving & Storage Suggestions
This green bean casserole is best served warm, straight from the oven. I like to let it rest for 5 minutes after baking so the sauce sets up and doesn’t turn into a puddle on the plate. It pairs beautifully with roasted turkey or chicken, but honestly, I’ve eaten it as a main dish with a side salad and been perfectly happy.
For a holiday table, I serve it in a nice ceramic baking dish and sprinkle a few extra fried shallots on top right before bringing it to the table. The presentation is stunning—the golden shallots against the creamy green sauce just looks like comfort on a plate. If you’re feeling fancy, garnish with a sprinkle of fresh thyme or parsley.
Storage: Leftovers keep well in an airtight container in the refrigerator for up to 4 days. The shallots will lose some of their crunch, but the flavor is still fantastic. To reheat, pop individual portions in the microwave for 1-2 minutes, or reheat the whole casserole in a 350°F oven for 15 minutes. If you want to restore some crunch, sprinkle a few fresh fried shallots on top before reheating.
Freezing: This casserole freezes beautifully. Assemble it completely (without the shallot topping), wrap it tightly in foil, and freeze for up to 3 months. Thaw overnight in the refrigerator, then bake as directed, adding 10-15 minutes to the baking time. Add the shallots in the last 5 minutes. I’ve done this for Thanksgiving prep, and it’s a total game-changer.
One thing I love about this recipe is how the flavors deepen after a day in the fridge. The mushroom sauce gets even more savory and complex. So don’t be afraid to make it ahead—it might actually be better the next day.
Nutritional Information & Benefits
Here’s the thing about this green bean casserole: it’s real food made with real ingredients, so it’s naturally more nutritious than the canned soup version. Green beans are packed with vitamin K, vitamin C, and fiber. Mushrooms are one of the few natural sources of vitamin D, and they’re also rich in B vitamins and antioxidants. The whole milk and cream provide calcium and protein, and the shallots add a dose of quercetin, a powerful anti-inflammatory compound.
Estimated nutritional values per serving (1/8 of recipe):
- Calories: 245
- Total Fat: 14g
- Saturated Fat: 7g
- Cholesterol: 35mg
- Sodium: 480mg
- Total Carbohydrates: 22g
- Dietary Fiber: 3g
- Sugars: 8g
- Protein: 7g
This recipe is vegetarian as written, and can easily be made gluten-free or dairy-free with the substitutions mentioned earlier. It’s not low-carb, but it is a balanced side dish that brings both vegetables and protein to the table. I love that I can serve this to my family and feel good about what they’re eating—no preservatives, no artificial flavors, just honest food.
Conclusion
I’ll be honest with you: I never thought I’d be the person who makes green bean casserole from scratch on a random Tuesday. But that afternoon at Maggie’s house changed something for me. It showed me that homemade doesn’t have to be hard, and that the best recipes often come from people who aren’t trying to impress anyone. They’re just making dinner.
This recipe has become a staple in my kitchen. I make it for holidays, for potlucks, and for those nights when I need something warm and comforting on the table fast. It’s forgiving, it’s flexible, and it always delivers. I’d love for you to try it and make it your own. Maybe you’ll add extra garlic, or swap in a different herb, or double the shallot topping (I won’t judge). However you make it, I hope it becomes a favorite in your home too.
If you give this recipe a try, let me know how it goes! Leave a comment below and tell me about your version. Did you add bacon? Go dairy-free? Serve it at Thanksgiving? I genuinely love hearing about how these recipes work in your kitchen. And if you have any questions, don’t hesitate to ask. Happy cooking, friends!
Frequently Asked Questions
Can I use frozen green beans instead of fresh?
I don’t recommend it. Frozen green beans release a lot of water as they cook, which will make your sauce thin and watery. Fresh green beans give you the best texture and flavor. If you’re in a pinch, you can use frozen, but blanch them for only 1 minute and pat them very dry before adding to the sauce.
Can I make the fried shallots in an air fryer?
Yes! Toss the sliced shallots with a tablespoon of oil and the flour mixture, then spread them in a single layer in the air fryer basket. Cook at 350°F for 8-10 minutes, shaking halfway through, until golden and crispy. They won’t be quite as crunchy as the fried version, but they’re still delicious and much lighter.
Why did my sauce turn out lumpy?
This usually happens when you add the milk too quickly or don’t whisk constantly. The key is to add the milk in a slow, steady stream while whisking like crazy. If you end up with lumps, don’t stress—just pour the sauce through a fine-mesh strainer and whisk it smooth. It’ll be perfect.
Can I double this recipe for a crowd?
Absolutely. Just double all the ingredients and use a larger baking dish (a 9×13 dish works for a single batch; for a double batch, use a 11×15 or two 9×13 dishes). You might need to add 5-10 minutes to the baking time. The fried shallots are best made in batches so they cook evenly.
How do I keep the shallots crispy if I’m making this ahead?
The best trick is to store the fried shallots separately and add them right before serving. If you’ve already baked the casserole with the shallots on top and they’ve gone soft, you can crisp them up by placing the casserole under the broiler for 1-2 minutes. Watch it carefully so they don’t burn!
Pin This Recipe!

Easy Green Bean Casserole from Scratch: Best Homemade Recipe
This homemade green bean casserole features a creamy mushroom sauce, tender-crisp green beans, and a crispy fried shallot topping. It’s made from scratch with simple ingredients and comes together in about 45 minutes, perfect for weeknights or holiday feasts.
- Prep Time: 15 minutes
- Cook Time: 30 minutes
- Total Time: 45 minutes
- Yield: 8 servings 1x
- Category: Side Dish
- Cuisine: American
Ingredients
- 1 ½ pounds fresh green beans, trimmed and cut into 2-inch pieces
- 2 tablespoons unsalted butter
- 8 ounces cremini mushrooms, sliced
- 1 small yellow onion, finely diced (about ¾ cup)
- 3 cloves garlic, minced
- ¼ cup all-purpose flour
- 2 cups whole milk
- 1 cup chicken or vegetable broth, low-sodium
- ½ cup heavy cream
- 1 teaspoon salt, plus more to taste
- ½ teaspoon black pepper
- ¼ teaspoon nutmeg
- ¼ teaspoon cayenne pepper (optional)
- 3 large shallots, thinly sliced into rings (about 1 cup)
- ⅓ cup all-purpose flour
- ½ teaspoon salt
- ¼ teaspoon black pepper
- Vegetable or canola oil, for frying (about 1 cup)
Instructions
- Preheat your oven to 375°F (190°C).
- Blanch the green beans: Bring a large pot of salted water to a rolling boil. Add the trimmed green beans and cook for exactly 3 minutes. Drain immediately and transfer to a bowl of ice water to stop the cooking. Let them sit for 2 minutes, then drain again and set aside.
- Start the shallots: While the beans are blanching, heat about ½ inch of oil in a small saucepan over medium heat. In a shallow bowl, combine the flour, salt, and pepper. Toss the sliced shallots in the flour mixture until each ring is lightly coated. Shake off any excess. When the oil is hot, fry the shallots in batches for 2-3 minutes, stirring occasionally, until golden brown. Use a slotted spoon to transfer them to a paper towel-lined plate. Sprinkle with a pinch of salt while still warm. Set…
- Sauté the mushrooms and onions: In a large skillet, melt the butter over medium-high heat. Add the sliced mushrooms and cook without stirring for 3 minutes. Then stir and cook for another 2 minutes until golden. Add the diced onion and cook for 3-4 minutes until softened. Add the minced garlic and cook for 30 seconds until fragrant.
- Make the cream sauce: Sprinkle the flour over the mushroom mixture and stir constantly for 1 minute. Slowly pour in the milk while whisking continuously to prevent lumps. Then add the broth, whisking until smooth. Bring to a gentle simmer and cook for 3-4 minutes until thickened. Stir in the heavy cream, salt, pepper, nutmeg, and cayenne if using. Taste and adjust seasoning.
- Combine everything: Add the blanched green beans to the skillet and stir until fully coated in the sauce. Transfer the mixture to a 9×13-inch baking dish and spread into an even layer.
- Bake the casserole: Place the dish in the preheated oven and bake for 20-25 minutes, until the sauce is bubbly around the edges and the top is lightly golden.
- Add the topping: Remove the casserole from the oven and sprinkle the fried shallots evenly over the top. Return to the oven and bake for another 5 minutes, until the shallots are warmed through and extra crispy.
- Rest and serve: Let the casserole sit for 5 minutes before serving.
Notes
Blanching the green beans is crucial for color and texture. Don’t skip it. For the mushrooms, give them space in the pan to brown properly. The fried shallots can be made up to 3 days ahead and stored in an airtight container at room temperature. To make ahead, assemble the casserole (without shallots) and refrigerate for up to 24 hours; add 10 minutes to baking time. For a gluten-free version, use a 1:1 gluten-free flour blend. For dairy-free, use olive oil instead of butter and unsweetened oat milk or full-fat coconut milk.
Nutrition
- Serving Size: 1/8 of recipe
- Calories: 245
- Sugar: 8
- Sodium: 480
- Fat: 14
- Saturated Fat: 7
- Carbohydrates: 22
- Fiber: 3
- Protein: 7
Keywords: green bean casserole, homemade, from scratch, Thanksgiving side dish, mushroom sauce, fried shallots, comfort food


