Heat the olive oil over medium heat in a large skillet. Add the onion and pepper and sauté until soft and translucent, 5 to 8 minutes. Season with salt and pepper while cooking. Add the minced garlic and cook for 30 seconds longer. Remove from the pan to a bowl.
Add the ground beef to the pan, increase the heat to medium-high and cook until the beef is completely browned, breaking it up with a wooden spoon as it cooks. If the beef has released a lot of fat, drain off most of it.
Add the vegetables back to the pan and stir in the tomato puree, ketchup, brown sugar and chili powder. Season with salt and pepper and simmer until slightly thickened, about 10 minutes. Remove from heat and serve on hamburger buns. Leftovers can be kept in an airtight container in the refrigerator for up to 4 days.
Notes
Ground Beef: You can substitute ground turkey, ground chicken, or even a "beyond the meat" product.
Storing: Keep leftover sloppy joe meat in an airtight container in the refrigerator for up to 4 days.
Freezing: Cool the sloppy joe meat completely before freezing. Place in a freezer-safe container and freeze for up to 3 months.
Reheating: Move the sloppy joe meat from the freezer to the refrigerator the night before you plan on eating the sloppy joes. Heat the meat in a saucepan or skillet until warmed through.
Make-ahead: You can brown the meat in advance and simply add it to the skillet when you are cooking it with the sauce before serving.
Double: To make a double batch of the sloppy joe meat sauce, double the recipe ingredients. I would suggest cooking the sloppy joes in a large pot like a 7-qt dutch oven to contain all of the ingredients.