The Tigers had trailed to Ilias Chair’s opener but hit back to level before half time thanks to George Honeyman’s first goal for the Club. It was then left to Irvine to grab the glory as he slid in to meet Jarrod Bowen’s late free kick and earn all three points.
Grant McCann’s starting eleven showed three changes to the one that began against Nottingham Forest on Boxing Day. Stephen Kingsley replaced the injured Callum Elder at left back, while Honeyman and Josh Bowler came in for Daniel Batty and Tom Eaves.
Batty and Eaves were on the bench where they were joined by young midfielder Elliot Bonds and teenage striker James Berry, a recent signing from Wigan Athletic.
Former Hull City loanees Todd Kane and Marc Pugh were amongst the QPR substitutes.
Leonardo Da Silva made a timely intervention inside his own box to deny Ebere Eze an early shot while George Long made a save from Nahki Wells who had got his head on the end of a set-piece delivery as QPR enjoyed the majority of the play in the opening stages.
And it was the home side that took the lead in the 20th minute when Chair was given time and space on the edge of the box to drill a shot past Long.
Kingsley’s block from Chair denied Rangers a second in as many minutes before Bright Osayi-Samuel curled over after cutting in from the right flank.
However, from their first real attack of note, the Tigers drew level in the 32nd minute. Bowler’s run down the right ended with a cross that looked to be a simple one to take for goalkeeper Joe Lumley, but he spilled the ball at his near post and Honeyman reacted first to poke home from close range.
Bowler was then denied by Lumley before the visitors lost the services of Kingsley eight minutes before the break as he pulled up to be replaced by Matthew Pennington, meaning a switch to left back for Eric Lichaj with Pennington playing on the right.
Long made a good save to keep out Chair as he burst through the middle to ensure the sides went in level at the break.
Eze sent a shot out of the ground within a minute of the restart and Long made a block at his near post as the hosts showed plenty of attacking intent.
Luke Amos and Dominic Ball fired wide from distance, while at the other end the Tigers were struggling to create anything of note.
Jordy de Wijs picked up a booking for a late challenge just after the hour mark before Eaves came on to replace Kamil Grosicki and the substitute headed just wide from Pennington’s cross seconds after entering the action.
Honeyman became the second player to be booked when he challenged Eze by the touchline, his final act before being replaced by Batty.
Jordan Hugill was inches away from getting a toe on a dangerous low ball across the six-yard box as the home side pushed for a winner, but the next goal would go the way of the Tigers in the 89th minute. Eaves did well to win a free kick for his side and when Bowen delivered to the back post, Irvine slid in to apply the finish.
It proved to be the match-winner, with McCann’s men seeing out the four minutes of added time.
Queens Park Rangers: Joe Lumley, Grant Hall, Luke Amos (Matt Smith 66), Ebere Eze, Dominic Ball, Ryan Manning, Ilias Chair (Jordan Hugill 79), Bright Osayi-Samuel, Nahki Wells, Angel Rangel, Toni Leistner.
Subs Not Used: Liam Kelly, Todd Kane, Lee Wallace, Marc Pugh, Josh Scowen.
Hull City: George Long; Eric Lichaj ©, Reece Burke, Jordy de Wijs, Stephen Kingsley (Matthew Pennington 37); Leonardo Da Silva Lopes, Jackson Irvine, George Honeyman (Daniel Batty 77); Josh Bowler, Kamil Grosicki (Tom Eaves 66), Jarrod Bowen.
Subs Not Used: Matt Ingram, Ryan Tafazolli, Elliot Bonds, James Berry.
Referee: Mr G. Ward.
Attendance: 13,814 (775 Visiting Supporters).