NAT is a Firewall. And It's not an opinion. It's a fact. Looking into the definition of Firewall:
A firewall is "a system or combination of systems that enforces a boundary between two or more networks."
National Computer Security Association's standard Firewall Functional Summary template
A NAT creates exactly that sort of boundary.
What other firewalls maybe provide is the ability to block outbound connections, not just incoming connections. Nice feature, but not the main one.
Talking about features, a DMZ is a hole between networks. Normally it provides a way to expose an internal service to the Internet. While not technically part of the NAT definition, it's a feature of all modern NATs
NAT is firewall and in some situations, the best one. Stateful inspection firewalls, which don't do NAT, do mostly "fail-open". I worked for a "Next generation firewall" company as developer. To do the protocol/application detection inline, some packagespackets had to pass through until it get detected. There were no way to buffer it, without introduce delay. Almost all DPI solutions work like that.
NAT, on the other hand, fails closed. Common mistakes shutdown access to the Internet rather than open up access from the Internet.