Dice the onion and mince the garlic. Cook both in a large skillet over medium heat with the olive oil until soft and transparent (about 5 minutes).
Add the ground beef and continue to cook until browned. Mix together the taco seasoning ingredients while the beef is browning. Once the beef is fully cooked through, add the taco seasoning and stir to combine. Drain the beans and add to the skillet. Stir until combined. Taste and season with salt as needed (I used about 1 teaspoon).
Allow the beef and bean filling to sit while you cook the pasta shells. Bring a large pot to a boil, add the shells and cook just until tender. Be sure not to over cook the shells or they will be soft and difficult to fill. While the pasta shells are cooking, prepare the enchilada sauce.
Preheat the oven to 350 degrees. Drain the shells in a colander and rinse with cold water until they are cool enough to handle. Spray the inside of a 9×13 inch casserole dish with non-stick spray. Fill the shells with the beef and bean filling and place in the casserole dish. It’s okay if they’re not aligned neatly or if they topple over and spill some filling, it will still be good.
Once all of the shells are filled and in the casserole dish, pour the prepared enchilada sauce over top and then add the shredded cheese. Cook in the preheated oven for about 30 minutes or until the cheese is melted and everything is heated through (all ingredients are already cooked, so there is no real danger of undercooking here. You just want to get it all HOT).
Slice the green onions and sprinkle over top after it comes out of the oven. Serve hot!
If you don’t want to make your own beans, taco seasoning, and enchilada sauce, here are the store bought equivalents: 1 (15 ounce) can of black beans, 1 (15 ounce) can of pinto beans, 1 packet of taco seasoning, and one (28 ounce) can of enchilada sauce.