As in other programming languages, you can generate Apex code starting from the WSDL using the "Generate from WSDL" button present at the top of the Apex Classes list in the Setup UI. The process is described e.g. in SOAP Services: Defining a Class from a WSDL Document.
However, there are a number of limitations in that tooling, including that it only supports SOAP 1.1. Some of these can be worked around by editing a copy of the WSDL before the Apex code is generated (very commonly needed) and others by editing the generated Apex code. Googling will return a number of postings on that subject e.g. Getting Apex2wsdl parse External application WSDLs and make it work.
The most extreme work-around is to manually write Apex code that generates the request XML, makes the HTTP calls and parses the response XML: the WSDL contains all the necessary specification to be able to do that (but WSDL and the XML Schema that is part of it are not simple things). That is a lot of work and not easy to get right.
So the overall approach is to get the WSDL file, and start by using "Generate from WSDL" and deal with the problems that come up. You could be lucky and experience few or no problems...
(You will have to wire up e.g. a button to a controller to test calls against the real external service as such calls can't be made from an Apex unit test: only calls to a mock can be made from unit tests.)