In a medium saucepan, heat olive oil. Add chopped onions and cook over medium to medium-low heat for 3 minutes, stirring often. The object is to "sweat" the onions, not brown them, so adjust the heat accordingly. Add garlic and cook for another 30 seconds to 1 minute.
Add all of the remaining ingredients except butter and liquid smoke. Let sauce simmer for 8-10 minutes over medium-low to low heat. Stir occasionally.
Remove from heat, stir in butter and liquid smoke. Allow sauce to cool for 10 minutes then pour into a blender or food processor. You might need to do this in batches. Puree mixture until smooth and thick. Use immediately or store in an air tight container in the refrigerator for up to 1 week after preparation. Reheat before serving.