In a large sauté pan or skillet, brown the beef over medium-high heat until it is quite brown.
Remove the meat from the skillet and drain it in a colander. Set aside.
In the same skillet, sauté the onion over medium heat until browned. Add the minced garlic and cook for about 20 seconds. Do not burn the garlic, it will taste acrid.
Return the meat to the pan and stir to combine. Keep the heat on low.
Combine the drained beans and approximately 1/2 of the salsa in the bowl of a food processor.
Process until the beans are pureed. Add the rest of the salsa and pulse to combine.
Pour this mixture over the beef/onion mixture and stir to combine.
Bring this to a simmer over low heat and allow the moisture to reduce until thickened, about 20 minutes. Be sure to scrape and stir occasionally to keep the contents on the bottom of the pan from burning.
After the burrito filling has reduced and cooked for about 20 minutes, add the chopped cilantro and taste for seasoning.
If you are using the filling right away, fill the tortillas with about 1/2 cup of the mixture and top with the optional cheese. Serve with the guacamole or sour cream.
If you are planning on using the filling later, allow the filling to cool, then fill and roll the tortillas.
Wrap each burrito in plastic wrap, stack in zip-top bags and freeze for future use.
To serve, microwave loosely covered on high heat for about 5 minutes. This will vary with each microwave.