Tharanga, who scored 105 in the win over Bangladesh, made 110 off 130 balls and put on 165 in even time with Kumar Sangakkara, who struck 80.
The duo and Dilshan fell in quick succession as Zimbabwe's spinners fought back late on. But they still face huge task to prevent a second straight heavy defeat.
Things looked promising for them when Anthony Ireland and Tawanda Mupariwa began tidily enough but Tharanga soon slipped into the groove he found on the previous game. He scored bulk of his runs on the off-side with a succession of cuts and drives, smashing 13 fours and thrashing a good-length Mupariwa delivery over long-off for six
Zimbabwe were boosted when Sanath Jayasuriya, backing up, was caught short of his crease by a superb pick and throw from Elton Chigumbura and skipper Mahela Jayawardene chased a wide one from Ireland only to give a regulation catch to Taylor.
But Sangakkara, whose fourth run took him up to 5,000 runs in one-day internationals, proved a good foil for his young partner and, after a period of consolidation, they launched an assault.
Tharanga produced a glorious cover drive to bring up the century partnership in 120 balls with and then crashed Tafadzwa Kamungozi down the ground.
Sangakkara lifted the leg-spinner elegantly over mid-wicket to bring up his 50 in 66 balls and skipper Prosper Utseya's ninth over went for 15 as both left-handers pulled for boundaries.
They were starting to look tired, however, and Tharanga missed with an expansive drive off Stuart Matsikenyeri, while Sangakkara mistimed Chibhabha straight to Matsikenyeri at long-off.
Dilshan became the third soft dismissal when he paddled Utseya straight to square-leg and Farveez Maharoof was plumb infront to Kamungozi, who saw Muttiah Muralitharan hole out to long-off.
In a typically frenzied last 12 overs, 76 runs came at the cost of five wickets - a reward for the Zimbabweans' enthusiastic display in the field, but it was likely to prove in vain.
Brief Scores: Sri Lanka 285 for 7 in 50 ( Uupal Tharanga 110, K Sangakkara 80, Atapattu 33 not out; Kamungozi 2 for 55, Chibhabha 1 for 25, P Utseya 1 for 56) vs Zimbabwe