✓ Accepted answer
Here's something I typed up awhile back in the scripting helper's discord. It should answer your question. The only think you need to decide is the time it takes to reach the target.

local function grenade(x0, x1, t)
local g = Vector3.new(0, -game.Workspace.Gravity, 0);
local v0 = (x1 - 0.5*g*t^2 - x0) / t;
local part = Instance.new("Part");
part.CFrame = CFrame.new(x0);
part.Shape = Enum.PartType.Ball;
part.Size = Vector3.new(1, 1, 1);
part.Velocity = v0;
part.Parent = game.Workspace;
end
local mouse = game.Players.LocalPlayer:GetMouse();
local hrp = game.Players.LocalPlayer.Character:WaitForChild("HumanoidRootPart");
mouse.Button1Down:Connect(function()
local x0 = (hrp.CFrame * CFrame.new(0, 0, -3)).p;
local t = 1;
grenade(x0, mouse.Hit.p, t);
end)