Heat olive oil in a large skillet over medium-high heat.
Add diced onion and cook until translucent, about 3-4 minutes.
Stir in minced garlic and cook for another 30 seconds until fragrant.
Add ground beef, breaking it up with a wooden spoon. Cook until browned, about 5-7 minutes.
While the beef is cooking, peel and cube the sweet potatoes into ½-inch pieces.
Once the beef is browned, add the cubed sweet potatoes to the skillet.
Sprinkle cumin, paprika, chili powder, salt, and pepper over the mixture. Stir well to combine.
If the sweet potatoes are not softening or the skillet seems dry, add up to 1 cup of beef broth or water. Reduce heat to medium-low, cover, and simmer for about 12-15 minutes, stirring occasionally, until the sweet potatoes are tender.
If using bell peppers or black beans, add them during the last 5 minutes of cooking.
Once the sweet potatoes are tender and most of the liquid has evaporated (if used), remove the lid. Cook for an additional 2-3 minutes to let any excess moisture evaporate.
If desired, sprinkle shredded cheese over the top, cover, and let it melt.
Garnish with fresh cilantro or parsley before serving.