Joyce (112 from 103 balls) put on 138 with Andrew Balbirnie (97 from 79) for the third wicket as Ireland plundered 331-8 – their highest score in ODI cricket – after being put into bat.
Centuries from Brendan Taylor (121 off 91) and Sean Williams (96 from 83), as well as some lower-order pyrotechnics, took Zimbabwe to within sight of victory with one over remaining.
But Alex Cusack (4-32) took the final two wickets – Tawanda Mupariwa the last man out, caught by William Porterfield – as Ireland triumphed by five runs and opened up a two-point cushion over West Indies in their quest for a last-eight berth.
Joyce enjoyed plenty of luck en route to three figures, edging the first ball he faced just short of Hamilton Masakadza in the slip cordon and then being dropped on 34 by Mupariwa.
But the 36-year-old brought up his third ODI ton off 96 balls and had clubbed nine fours and three sixes before he was caught by Craig Ervine, the player who had shelled him when he was on 105.
Balbirnie missed out on becoming Ireland’s second centurion of the match when he was run out in the final over, but the Dubliner, who notched 58 in Ireland???s previous game against South Africa, added crucial impetus to his team???s innings.
The right-hander biffed seven fours and four maximums at Bellerive Oval and combined excellently with Kevin O???Brien (24 from 22) – dropped at short cover on five – to add 59 runs in 33 deliveries.
Gary Wilson (25 from 13) enjoyed himself late on, too, while captain Porterfield (29 from 61) added 63 with Joyce for the second wicket following the early demise of Paul Stirling (10).
John Mooney added a brisk four-ball 10 for Ireland and was soon among the wickets, too, Sikandar Raza (12) edging the medium pacer to Stirling at slip after putting on 32 with Chamu Chibhabha (18).
Chibhabha and danger-man Masakadza (5) were soon on their way as well, the former caught by Porterfield at cover and the latter nicking off to wicketkeeper Wilson.
However, Taylor, captaining Zimbabwe in the absence of the injured Elton Chigumbura, and Williams played aggressively once Solomon Mire (11) had cut George Dockrell to Cusack at point.
Taylor and Williams put on 149 for the fifth wicket, before the skipper, who smoked 11 fours and four sixes, chipped Cusack to Kevin O???Brien at mid-on to hand Ireland a vital breakthrough.
The associate nation were buoyed further when Andy McBrine had Ervine caught at short third man by Niall O???Brien but Williams was still going strong ??? until he exited in contentious circumstances.
The 28-year-old walloped Kevin O???Brien to??Mooney in the deep and despite replays suggesting the fielder???s foot may have connected with the boundary cushion, Williams was given out.
Zimbabwe did not fold, though, cracking 19 from the penultimate over to take the contest the distance, but Cusack removed Regis Chakabva (17) and Mupariwa (18) in the final over to send Ireland wild and end Zimbabwe’s quarter-final hopes.