Captain Andy Balbirnie and Lorcan Tucker both scored half-centuries as Ireland set Zimbabwe a testing victory target of 292 before taking three wickets on the third day of the one-off Test in Bulawayo.
The tourists had resumed their second innings at 83 for one.
Balbirnie, batting on from 32 overnight, had helped push the total on to 171 for four when he was trapped lbw on 66 by Wesley Madhevere, who claimed his maiden Test wicket.
Wicketkeeper-batter Tucker dug in with a determined 58, with six boundaries and one over the rope, from 95 deliveries before he was last man out from a top edge off seamer Richard Ngarava, with Andy McBrine (16) and Mark Adair (15) having provided useful support.
LOI Talking Points: Bohs fall short of another miracle as Derry City fly up to second
Paddy Christie on Owen Mulligan’s memorable 2005 goal: ‘To this day I would say it was great play... it changed everything’
No line judges at Wimbledon: you cannot be serious
The reckless New Zealand tackle that ended Brian O’Driscoll’s Lions tour and changed rugby
Ngarava finished with four wickets for 55 runs as Ireland were dismissed for 298 from 93.3 overs.
Zimbabwe, looking to make a record victory run-chase when batting last, lost openers Takudzwanashe Kaitano (14) and Ben Curran (four) cheaply.
Test debutant Nick Welch (five) was then trapped lbw by Matthew Humphreys, leaving the hosts 38 for three from 15 overs at stumps, with Brian Bennett on 15 not out, and needing another 254 to win.