Companies are supposed to use the exact job title, but software engineers--particularly in high-demand categories--are difficult to find.
If the hiring team was having a hard time sourcing enough good candidates for the position, they could have reframed the title in the ad to attract more candidates; it's usually more difficult to rewrite a job req and so it's sometimes left alone. In addition, the recruiting software can constrain the choice of title (although it shouldn't).
Or sometimes companies will advertise a single generic ad for software developers as a kind of fishing expedition, then redefine the actual position to fit the actual hire.
And, finally, in larger companies tech employee titles go with particular pay grades, and their performance evaluations are based on meeting all the criteria of that grade level. Sometimes a hiring manager finds a more junior candidate that s/he really likes and wants to hire, but doesn't think they have the experience to meet all the evaluation criteria. So the manager will scale down the position to give the employee some growing room and prevent them from getting a bad performance review in their first couple of years.
Not saying that your situation is any of the above, but it's worth clarifying with your manager and/or HR. I'm not sure I agree that titles are meaningless; words like "senior" and "lead" and "associate" can make a big difference on a resume, especially when you work for big corporations. (If we were talking about titles like "Supreme God of Cloud Elasticity" I'd say yeah, who cares...but we're not.)
If your offer letter does indeed say "Software Engineer" and not "Associate Software Engineer," then check the contract/employment agreements that you signed. They should have the same title. If they do, go straight to HR. Either there's been a mistake, or HR has rebuilt its job classifications. Happened to me once, and for a very brief time I was a Purchasing Manager (something I know diddly squat about).
If both titles don't match, check with your manager AND HR to find out what happened. You need to discover if there was an error that should be corrected (and if that error comes with back pay but I'll bet it doesn't).
If HR says that "software engineer" was simply the generic term, not the specific job classification, while the one on the employment agreement is the "real" title, shift tactics. (One of which is that you should always check such things before you sign an employment agreement; they're a lot harder to fix once you're an employee.)
First, what is the title of the position above yours? It might not be Software Engineer, so check. Then ask if the two years of excellent work you've done since your hire now qualify you for that level (in other words, promotion). If your manager tells you that it doesn't, ask what else you need to do to reach that level. Then decide what to do with whatever you hear.
Unless there's a specific grade-level issue, most managers I've known are pretty good about working to give you the title you want. Hopefully that's the case here.