Preheat oven to 375°F and grease baking dish.
Cook pasta until al dente, drain, and set aside.
Sauté garlic and onion in olive oil until soft.
Add butter and flour, cook to form roux.
Gradually add milk, whisking to prevent lumps.
Stir in cheeses until smooth and creamy.
Season sauce, then combine with pasta.
Pour into dish, top with remaining mozzarella.
Bake for 25–30 min until golden and bubbly.
Let rest 5–10 min before serving.