Preheat the oven to 350˚F. Grease a 9x13-inch baking dish and set aside.
In a large saucepan, melt butter the butter over medium-low heat. Add the onion and garlic and cook until the onion begins to soften, about 3 minutes. Add the flour and cook for 1-2 minutes.
Combine the milk and broth. Add a small amount at a time, whisking after each addition. The mixture will become very thick at first, continue adding a little bit of liquid at a time whisking until smooth.
Once all of the liquid has been added, increase the heat to medium and bring to a boil while continuing to whisk. Stir in ½ teaspoon salt and ⅛ teaspoon pepper and let boil for 1 minute.
Place ⅓ of the potatoes in the prepared dish and season each layer with ¼ teaspoon salt and ⅛ teaspoon pepper. Pour ⅓ of the cream sauce over top.
Repeat the layers ending with cream sauce. Cover and bake for 45 minutes.
Uncover and bake for an additional 35-45 minutes or until golden brown and potatoes are tender. Broil for 3-4 minutes or until golden on top.
Allow to rest for at least 15 minutes before serving.