Sprinkle the gelatin evenly over 1/4 cup cold water in a small bowl and let it sit to bloom for 8–10 minutes until it swells and softens.
While the gelatin blooms, combine the heavy cream and 1/3 cup sugar in a medium saucepan. Warm the mixture over medium heat, stirring occasionally, until steam rises and the sugar is fully dissolved (do not let it boil).
Remove the cream from the heat and stir in vanilla and the optional almond extract. Add the bloomed gelatin to the hot cream and whisk briskly for 1–2 minutes until the gelatin fully dissolves and the mixture is smooth.
For an extra-smooth texture, pour the cream mixture through a fine-mesh sieve into a heatproof pitcher to catch any undissolved bits or foam.
Divide the strained panna cotta base between six 4–6 ounce ramekins or serving glasses. Let them cool uncovered at room temperature for about 20–30 minutes, then cover each with plastic wrap and refrigerate until fully set, at least 6 hours or overnight.
About 30–40 minutes before you plan to serve, make the berry sauce: place the berries, 1/3 cup sugar, and lemon juice in a small saucepan over medium heat. Cook, stirring occasionally, until the berries begin to break down and release juices, about 5–7 minutes.
Mix the cornstarch with 1/4 cup cold water until smooth. Stir this slurry into the simmering berry mixture and raise the heat until it comes to a gentle boil; cook 1–2 minutes until the sauce thickens. Remove from heat and stir in the lemon zest.
If you prefer a smooth sauce, use an immersion blender or transfer the cooled sauce to a blender and pulse until uniform. Let the sauce cool to room temperature, then chill until ready to serve.
To unmold the panna cotta (optional), dip the bottoms of the ramekins in hot water for 6–10 seconds, wipe the edges, then invert each onto a plate. If serving in glasses, spoon the sauce on top. Garnish with whole berries if desired.
Serve chilled. Leftovers keep covered in the refrigerator for up to 3 days; sauce can be stored separately for up to 5 days.