Heat olive oil in a large skillet over medium-high heat. Add the ground beef and cook, breaking it up with a wooden spoon, for 7-9 minutes until deeply browned with no pink remaining. Do not rush this step — proper browning builds flavor.
Carefully drain most of the excess fat from the pan, leaving just a small amount behind.
Reduce heat to medium. Add the diced onion and green bell pepper to the skillet with the beef. Cook, stirring occasionally, for 4-5 minutes until the vegetables are softened and the onion is translucent.
Add the minced garlic and cook for 1 minute more, stirring constantly, until fragrant.
Add the tomato paste to the skillet and stir it into the meat and vegetable mixture. Cook for 1-2 minutes to caramelize the paste slightly — this deepens the tomato flavor significantly.
Add the crushed tomatoes, ketchup, Worcestershire sauce, apple cider vinegar, brown sugar, yellow mustard, chili powder, smoked paprika, salt, and black pepper. Stir everything together until well combined.
Bring the mixture to a gentle boil, then reduce heat to medium-low. Simmer uncovered, stirring occasionally, for 15-20 minutes until the sauce has thickened to your desired consistency. It should be saucy but not watery.
Taste and adjust seasoning — add more salt, vinegar for tang, or brown sugar for sweetness as needed.
While the filling simmers, toast the buns cut-side down in a dry skillet over medium heat or under the broiler for 1-2 minutes until lightly golden.
Spoon a generous portion of the Sloppy Joe filling onto the bottom half of each toasted bun. Top with pickle slices or coleslaw if desired. Serve immediately.
Notes
Storage: Leftover filling keeps in an airtight container in the refrigerator for up to 4 days. Reheat in a skillet over medium-low heat with a splash of water or broth to loosen. Freeze: Cool filling completely and freeze in a zip-top bag for up to 3 months. Thaw overnight in the fridge before reheating. Protein swap: Ground turkey (93/7), ground chicken, or ground bison all work great. Veggie boost: Add finely diced mushrooms, shredded zucchini, or grated carrot — they blend right in. Slow cooker: Brown meat and sauté aromatics first, then transfer everything to a slow cooker and cook on low 4-6 hours or high 2-3 hours.