Mahrez hit the decisive free-kick in a 2-1 semi-final first-leg victory in Paris and strikes in either half in the return fixture added to that advantage.
Those goals and a dogged defensive effort – after a pre-match hail storm that left a sodden, awkward pitch – were enough to finally take Pep Guardiola's men through to Europe's showpiece match with a 4-1 aggregate triumph.
PSG played its part in another gripping affair, but Kylian Mbappe was only fit enough to make the bench and its frustration resulted in a red card for Angel Di Maria when he kicked out at Fernandinho.
The tricky conditions contributed to the chaos in an eventful opening that saw Oleksandr Zinchenko initially penalised for handball in the City area, only for a VAR review to confirm the ball had instead bounced away off his shoulder.
The indignant full-back was fittingly then involved in the opener. He cut a cross back to Kevin De Bruyne, whose deflected shot skidded to Mahrez for a first-time finish through Keylor Navas's legs from a tight angle.
First-leg scorer Marquinhos climbed highest to head against the City crossbar, before Angel Di Maria curled wide of an open goal soon after with Ederson stranded.
The game still did not settle, but there was at least a lull in the goalmouth action until a pair of Navas saves either side of half-time and then a clinical counter that killed the tie.
Foden offloaded the ball to De Bruyne and took his return pass on the left to send in a low centre that found Mahrez all alone to slam in again.
As in the game in Paris, the Ligue 1 side lost their discipline and Di Maria's dismissal for a stamp on Fernandinho might not have been the only red card.
City sought to punish the visitors further and Foden drilled against the foot of the post, before late changes ensured there would be no unwanted suspensions ahead of a trip to Istanbul.