Misfeatures of UPnP: A) only for IPv4/NAT gateways; B) proprietary specification; C) defined as profile of SOAP over UDP (so very wide attack surface); D) allows every client to make 3rd-party port maps by default (so very insecure by design).
Corrections in PCP A) works for IPv4/NAT and IPv6 gateways (NAT and w/o NAT); B) open IETF specification; C) defined as simple binary protocol (so very narrow attack surface); D) disallows 3rd-party port maps unless optional extension implemented (so less insecure by design).
You need something that does this if you have a firewall (whether there is NAT or not). If you have an IPv6 gateway, then see RFC 6092 section 3.4 Passive Listeners for an explanation. That RFC is referenced by CableLabs and BBF specs, so it is what you should expect to see in most provider-provisioned home gateways in the near future.
Seriously, PCP is what you need to use for this. Does this suck? Maybe. Depends on whether you think having firewalls everywhere denying all inbound traffic to passive listeners by default is a good idea. If you think that's a good idea, then PCP doesn't suck. Deal with it.