Cook the sausage: In a large skillet over medium heat, cook the breakfast sausage, breaking it into crumbles as it browns (about 7-8 minutes). Transfer to a paper towel-lined plate to drain excess grease, reserving about 1 tablespoon of drippings in the pan.
Prep the eggs: In a mixing bowl, whisk together eggs, milk, salt, and pepper until well combined.
Scramble the eggs: Return the skillet to medium-low heat. Add the egg mixture and cook, stirring gently, until just set but still slightly moist (about 3-4 minutes). They should be slightly underdone since they'll cook more in the oven. Remove from heat.
Combine the filling: In a large bowl, gently mix the cooked sausage, scrambled eggs, 1/2 cup of the cheddar cheese, diced bell pepper, and half the green onions.
Make the sauce: In a saucepan over medium heat, melt the butter. Whisk in flour and cook for 1 minute. Gradually whisk in milk and bring to a simmer, stirring constantly until thickened, about 3-4 minutes. Remove from heat and stir in sour cream, green chiles, cumin, garlic powder, salt, and pepper until smooth.
Prepare for assembly: Preheat oven to 350°F. Spread 1/2 cup of the sauce in the bottom of a 9x13 baking dish.
Assemble the enchiladas: Spoon about 1/2 cup of the filling mixture onto each tortilla. Roll up tightly and place seam-side down in the prepared baking dish.
Add sauce and cheese: Pour the remaining sauce evenly over the enchiladas, making sure to cover all the tortillas (this prevents them from drying out). Sprinkle with the remaining 1/2 cup of cheddar cheese.
Bake: Cover with aluminum foil and bake for 25 minutes. Remove foil and bake an additional 5-10 minutes until cheese is bubbly and golden.
Garnish and serve: Sprinkle with remaining green onions and any optional toppings. Serve warm.