Romulus is correct. The key concept is that subs can be ignored during movement. From the FAQ:
Q. Let’s say I attack a sea zone that contains both enemy subs and surface warships. If at some point during the battle, all of the enemy surface warships are sunk and only subs remain, can I ignore the subs and end the battle?
A. No. Subs (and/or transports) can only be ignored during movement, and you can only ignore them when there are no surface warships in the sea zone with them. When you attack a sea zone, you attack all of the enemy units in that sea zone.
So if there are only enemy subs and/or transports blocking your amphibious assault, you can choose to ignore them and they won’t block it. However, if you choose to attack them (or if there are also surface warships there and you are forced to attack them), you must defeat all of the defending units before your amphibious assault can proceed.
In a nutshell, subs will only fail to block your assault if you never attack them in the first place or if they submerged after you attack them. Once you attack them, they will block it until they are destroyed or they submerge.
The wording of step 3 in the amphibious assault sequence implies that you can end the sea battle if only defending subs remain. This is of course incorrect, as subs can only be ignored during movement. There is a pending erratum to change this wording of to “If there was no sea battle or the sea zone has been cleared of all defending enemy units except transports and submerged submarines, …”. I don’t yet know when this will be published.