First, check if there really is a typo. As pointed out by @J.Constantine in comments, many countries do not put O's (the letter) on passport numbers for exactly this reason. Germany would be an example.
As pointed out by @phoog again in comments above, you should be able to tell O from 0 in the machine-readable zone. The letter is oval, and the digit is like a rounded rectangle.
If your typo remains a typo, do a new application!
This source (in German) says you will not even get your boarding pass handed over when your airline controls whether you have a valid ESTA upon check-in. However for me that check has never been thorough enough that they would have found a typo so you might be able to go ahead still.
However at immigration in the U.S. this will be noticed and then pray for a nice immigration officer. Here is a report (in German again) of someone who ran into this and was able to redo their ESTA at an internet cafe at the airport. Apparently this mistake is not unheard of but better correcting sooner than later.