Preheat the oven to 375F.
Cook shells in a large pot of salted water for 2-3 minutes shy of package directions (just under al dente). Drain, rinse with cold water, and set aside.
While the pasta is cooking, heat a large skillet over medium heat. Add the olive oil, onion, and ¼ teaspoon salt, stirring to combine. Cook until softened, about 3-5 minutes.
Add the beef, ½ teaspoon salt, garlic powder, and chili powder, stirring to break up the beef into crumbles. Cook until browned and cooked through, about 5 minutes, stirring frequently.
Add the beans and ½ cup enchilada sauce, stirring to combine. Cook 5 more minutes for the flavors to meld and the sauce to thicken.
Turn off the heat, add the cream cheese and ½ cup cheese, and stir to combine. Allow to cool slightly.
Add ½ cup enchilada sauce to the bottom of a baking dish, spreading into an even layer.
Once the shells are cooked and cooled, fill each shell (about 1 ½ heaping tablespoons) with the beef and bean mixture.
Arrange the shells in the baking dish, cover with remaining enchilada sauce, and then sprinkle evenly with 1 ½ cups cheese. Cover and bake for 30 minutes, then uncover and bake an additional 5-10 minutes, or until the cheese is brown and bubbling.