My setup with pi-hole is:
replace 192.168.100.4 with your pi-hole IP and 176.103.130.130,176.103.130.131 DNS servers with yours
On IP\DNS, setup the DNS server as the Pi-Hole private IP. Only one entry.
/ip dns
set allow-remote-requests=yes cache-max-ttl=1d servers=192.168.100.4
On pi-hole, setup the real DNS servers. I use 176.103.130.130 & 176.103.130.131
On IP\NAT, intercept all DNS traffic on port 53 (UDP+TCP) except the private IP of pi-hole.
/ip firewall nat
add action=redirect chain=dstnat comment="Intercept DNS queries UDP" \
dst-port=53 protocol=udp src-address=!192.168.100.4 \
to-ports=53
add action=redirect chain=dstnat comment="Intercept DNS queries TCP" \
dst-port=53 protocol=tcp src-address=!192.168.100.4 \
to-ports=53
This way no clients have to know about the pi-hole, they don't need to be able reach it or to have it configured as the DNS server via DHCP.
The router will intercept DNS traffic on all interfaces, query the pi-hole, then reply to the client. A benchmark showed no speed penalty in using this setup versus using the pi-hole directly.
Extra tip
In case the pi-hole ever goes offline for some reason, setup a netwatch script in Tools\Netwatch to bypass it.
/tool netwatch
add down-script=":log warning \"Pi-Hole offline. Changing DNS\"\r\
\n/system script run BeepDown\r\
\n/ip dns set servers=176.103.130.130,176.103.130.131;" host=\
192.168.100.4 interval=5s up-script=":log warning \"Pi-Hole back online. C\
hanging DNS\"\r\
\n/system script run BeepUp\r\
\n/ip dns set servers=192.168.100.4;"
later edit: Delete /system script run BeepDown and /system script run BeepUp from the netwatch script, or create the scripts with some sound in them to get audio notifications when the pi-hole goes offline.
Exemple /system script run BeepDown
/beep frequency=580 length=300ms;
:delay 300ms;
:beep frequency=580 length=300ms;
:delay 300ms;
:beep frequency=370 length=600ms;
and /system script run BeepUp
/beep frequency=580 length=300ms;
:delay 300ms;
:beep frequency=580 length=300ms;
:delay 300ms;
:beep frequency=870 length=600ms;