Nicolai Muller opened the scoring for the visitors in the seventh minute before Okazaki struck in the 17th and 70th minutes to put them three up.
Eljero Elia pulled a goal back for Bremen in the 85th minute and Franco reduced the deficit to one in the 90th minute, but there was no leveller.
Mainz have now won three of their last four matches to move to within two points of sixth-placed Schalke.
Bremen have lost two in a row and picked up just one victory in their last seven matches.
Mainz started brightly and went ahead when Muller spotted Bremen goalkeeper Sebastian Mielitz off his line and chipped him from 23 yards.
Mielitz was found wanting again 10 minutes later as Zdenek Pospech's looping shot came off the crossbar and fell to Okazaki, who blasted a shot through the legs of the keeper.
Bremen missed a good chance to get back into the contest in the 22nd minute as Assani Lukimya's header beat Mainz keeper Loris Karius but came back off the right post.
The hosts were close again a minute later as well, but Davie Selke's header went just wide.
And Bremen had a third chance six minutes after the re-start, but Karius made a superb save at the base of the left post from Di Santo's shot.
Karius then produced two fine saves to deny Aaron Hunt in the 67th minute.
Instead, Okazaki killed the contest at the other end, converting a cross from the right from Stefan Bell.
Bremen pulled goal back five minutes from time as Elia fired home from Di Santo's cross.
The pair swapped roles for a second goal in the 90th minute as the Argentinian headed in Elia's cross, but they had left their comeback too late.