Heat the vegetable oil in a large skillet over medium-high heat. Add the diced onion and cook until softened, about 4-5 minutes. Stir in the minced garlic and cook for 30 seconds until fragrant.
Add the ground beef to the skillet, breaking it into large chunks with a wooden spoon. Cook until no longer pink and the internal temperature reaches 160°F (71°C) for safety, about 6-8 minutes. Drain off any excess fat if needed.
Stir in the tomato paste, chili powder, cumin, smoked paprika, oregano, cayenne, salt, and pepper. Cook for 1-2 minutes, stirring constantly, until the spices are deeply fragrant and coat the meat.
Pour in the water or broth and add the drained black beans. Bring to a simmer, then reduce heat to medium-low. Cook for 8-10 minutes, stirring occasionally, until the liquid has reduced and the mixture is thick and juicy but not watery.
While the filling simmers, warm the tortillas one by one in a dry skillet over medium heat for about 30 seconds per side, or microwave them wrapped in a damp paper towel for 20 seconds. Keep covered with a clean cloth.
Lay a warm tortilla flat. Spoon about 1/2 cup of warm rice just below the center, leaving a 2-inch border. Top with a generous 3/4 cup of the beef mixture, a sprinkle of cheese, a spoonful of salsa, and lettuce if using. Fold the sides in, then tightly roll from the bottom up, tucking as you go.
Cut each burrito in half diagonally. Serve with sour cream, extra salsa, and fresh cilantro on the side.