Here's a dumbed down version
someone from 123.456.789.123 wants to send a packet to 456.789.123.456.
Mr 123.x.x.x's computer frist looks at the 456.x.x.x IP and says, "That IP doesn't match my subnet". So his computer sends the packet to his local gateway.
That gateway is actually a router. The gateway looks to see if that 456.x.x.x IP matches any known routes. In this case, it doesn't just for example. So then that gateway sends that same packet upstream to the next router. That router does the same thing.
At some point that packet gets forwarded so far upstream that a router says "Hey, I know where that packet goes". Turns out that router has an entry for all packets that start with 456. That router routes the packet to whichever router it's configured to send to. That next router says, "hey, I got a route for 456.789" and again routes to that next router. The next router looks at the packet and says "hey, I know where to send 456.789.123.x". It routes that IP to a gateway router. That gateway router says "hey, I can map 456.789.123.456 to a local MAC address".
The gateway modifies the packet, places the MAC address of the device with that IP, drops the packet on the local network. The packet goes to the switch and the switch says "hey, I know that MAC address", and routes the packet to the computer.