The prolific striker pounced on a loose ball eight yards out to touch it past City goalkeeper Dan Bentley and tap into an empty net after 57 minutes.
City substitute Louis Britton marked his debut by netting with a low drive three minutes from time, but it was no more than a consolation for his outplayed team.
The visitors created the first clear chance after 14 minutes. Marcus Forss broke onto a through ball and fired inches wide with his right foot from the corner of the box.
There were bookings for City's Kasey Palmer and Brentford's Toney as a game with little at stake for either side became physical.
Forss again went close from distance before the Bees had a strong penalty shout rejected for a push on Toney.
City midfielder Tyreeq Bakinson gave the ball away in a dangerous position and the Brentford goal ace went tumbling inside the box, but referee James Linington was not impressed and awarded City a free-kick.
Nahki Wells had the home side's best chance just before the break, but saw his close-range shot blocked following a penetrating run by Palmer.
Brentford goalkeeper David Raya then made an outstanding fingertip save from Wells, but the offside flag was already up.
Frank was forced into a change for the start of the second half, sending on Mads Bech Sorensen for Pinnock.
Toney fired into the side-netting in the 51st minute as Brentford continued to look the more threatening side.
Toney's opener came after the ball had ricocheted around in City's box without any defender able to clear.
Tommy Conway forced a save from Raya with a fierce drive from an acute angle as the Robins looked to respond, but Brentford countered and Nathan Baker was booked for cynically halting the break.
Both managers made further changes, Frank taking off Toney, no doubt with the play-offs in mind.
Still the visitors dominated and Bentley was at full-stretch to palm away a Christian Norgaard volley before the two late goals confirmed Brentford's total command.