For incoming connections (note I'm using the word connections, not packets), without any port forwarding/UPnP set up it would reject or drop the packet.
For outgoing connections (using SNAT), the router will keep 'state'. It will look at all the outgoing connections (for simplicity, a TCP packet going from inside to outside with a SYN flag), rewrite the source address/port to the WAN connection and send the packet onwards. It knows what it has rewritten the source address/port to, and when a packet comes back, it'll reverse that process to the original address/port.
So for my NAT router, I would get the following table:
TCP state codes: SS - SYN SENT, SR - SYN RECEIVED, ES - ESTABLISHED,
FW - FIN WAIT, CW - CLOSE WAIT, LA - LAST ACK,
TW - TIME WAIT, CL - CLOSE, LI - LISTEN
CONN ID Source Destination Protocol TIMEOUT
201805472 10.100.0.95:62110 83.69.0.50:42018 udp [17] 7
213891648 10.100.0.95:43327 176.68.233.117:53228 tcp [6] ES 4631
213891928 10.100.0.95:38139 213.101.14.165:54764 tcp [6] ES 6995
213223160 10.100.0.95:35725 176.68.233.117:53228 tcp [6] ES 386
215913952 10.100.0.1:38340 10.100.0.11:53 udp [17] 8
205319000 10.100.0.95:62110 95.22.94.199:22634 udp [17] 41
214931472 10.100.0.95:60500 213.101.14.165:5524 tcp [6] ES 6478
205547536 10.100.1.26:37992 141.138.198.177:993 tcp [6] ES 7118
387202720 10.100.1.26:58156 141.138.198.177:993 tcp [6] ES 7122
[output omitted]
If there is a packet coming back from 176.68.233.117 with destination port 53228, it will rewrite the destination address/port to 10 10.100.0.95:43327.