Brentford all but ended the play-off hopes of 10-man Ipswich despite losing Alan Judge to a serious injury.
Midfielder Judge was carried off on stretcher with his right leg in a brace, with Luke Hyam booked for his tackle in the third minute.
Sam Saunders put the Bees ahead before Hyam was dismissed after reacting to a Ryan Woods challenge.
Lasse Vibe scored twice in five minutes, with Liam Feeney’s late strike for Ipswich a consolation.
Mick McCarthy’s Ipswich side have now won only once in seven games, leaving them eight points behind sixth-placed Sheffield Wednesday.
Brentford’s win was their first at Portman Road, and first against Ipswich on any ground since 1955.
Judge, who could be a major doubt for the Republic of Ireland squad at this summer’s European Championship, was given oxygen in a near 10-minute delay following Hyam’s challenge.
His replacement, Konstantin Kerschbaumer, set up the opener after half an hour, dispossessing Cole Skuse in midfield – Ipswich’s claims for a free-kick were waived away – before passing to Saunder, who swept home.
Ipswich’s prospects were further dented in first-half injury time when Hyam reacted badly to Woods’ tackle, and his push resulted in a red card.
In the second half, Brentford made the extra man count, as Vibe scored his fourth and fifth goals in the past three games.
The first came via a deft header from a Maxime Colin cross and the second four minutes later, Vibe winning the ball from Christophe Berra before slotting beyond Bartosz Bialkowski.
Freddie Sears missed a golden chance to reduce the arrears when he blazed wide from close range, but the Tractor Boys halted a run of three games without scoring when Feeney finished calmly from David McGoldrick’s pass for his first Ipswich goal.