You need temporal filtering, and that's best achieved by Bessel and Gaussian filters. Bessel has linear phase, Gaussian has the lowest time delay, but in your case Gaussian would be preferred. For both filters approximations are used, because Bessel is \$\exp(-st)\$, while the Gaussian is \$\exp(-t^2)\$.
For your case, both could be implemented with passive filters, but you'll need LC, because simple RC will not do it. One answer suggests using that and, with enough stages you will converge towards a Gaussian, but that will only happen after many stages, whereas the approximation of the Gaussian filter is done, typically, using MacLaurin series. You'll also need a 4th order, or higher, for the best results, because a simple 2nd order will not make the pulses smooth enough.
If you're willing to consider the LC approach, you'll have to decide the input and output loads -- that's the sin of the passive filters. For an equally terminated 50 Ω Cauer ladder, you get this set of normalized values -- choose whichever one you want. I used the 2nd because it has the more sensible values for the inductors:
[L2=26.49682875264271,L1=112.1909090909091,C2=0.003541405021327631,C1=0.01863151013292656]
[L2=35.02617328519855,L1=20.4061135371179,C2=0.005490132961363412,C1=0.04998496692723993]
[L2=124.9624060150376,L1=13.72533333333333,C2=0.008162446057605459,C1=0.01401046936172085]
[L2=46.57877813504823,L1=8.853512705530642,C2=0.04487636709462672,C1=0.01059873200624362]
You can probably find tables for these. The elements are as shown below (with one of the 4 results):

The best results would have been achieved with a raised cosine filter, but good luck making that in the analog way. Gaussian is the best option, though, because of its (approximated) symmetrical impulse response, which gives you clean, bandlimited pulses. Note that this is a 4th order and the output is still not as symmetrical as you might want. If you need a 5th or 6th order, your best bet is to find those tables, because I'm trying to solve the equations and wxMaxima keeps on crunching.
If you want to add active filtering, then you can use this normalized transfer function and then this site to design each 2nd order section, separately:
$$H(s)=\dfrac{3.63465}{s^2+2.83724s+3.63465}\cdot\dfrac{2.80538}{s^2+3.2559s+2.80538}$$
I wanted to continue this yesterday, but it was late. You can have an 8th order Gaussian filter using only one (quad-)opamp. Here is the response of one made with LT1058 (blue), compared to its ideal counterpart (red), driven by a 1 Hz square pulse:

The response has a slight overshoot and that's due to the component tolerances and non-idealities of the opamp. It may be slightly worse on the breadboard (those caps will not be all the same). Scaling the values is done very easily: divide them by the frequency. E.g. if your frequency is 1 kHz, either scale the resistors to be 1000x less, or the capacitors.
I don't recommend going too low with the resistors because the currents might end up larger than what the opamp can source/sink; about the same thing with the capacitors: don't make them too large because their reactance may get too low and you'll have the same current problem. Common values are 1 kΩ or larger, or 1...10 μF or lesser. The reverse is also true: too large resistors means more noise and offset, too small capacitors means they will be comparable with the opamp's and PCB's parasitics.
For brevity, here is the normalized transfer function:
$$\begin{align}
H(s)=&\dfrac{7.41638}{s^2+2.99117s+7.41638}\cdot\dfrac{5.55929}{s^2+3.65986s+5.55929} \\
{}&\cdot\dfrac{4.75899}{s^2+4.01438s+4.75899}\cdot\dfrac{4.43336}{s^2+4.17382*s+4.43336}
\end{align}$$
As I said in the beginning, [edit] from the perspective of the ISI and, thus, the symmetry of the impulse [/edit], Gaussian is what you need here, not Bessel, because Bessel deals with linear phase (flat group delay), which gives slight overshoot when dealing with pulses. Here is an ideal 8th order Bessel (blue) compared to the Gaussian (red) counterpart:

As you can see, there is only a slight overshoot (and the delay is slightly greater), so you may be tempted to say "it's fine", until you look at the differences between the (quasi-)real setup and the ideal one, above -- that's when you'll realize that the differences will be amplified.
Ultimately, it will be up to the breadboard implementation and that will bring discrepancies between elements that will -- most likely -- make both the Bessel and the Gaussian responses come close enough. Since in the OP there are no special requirements, only some vague notions about pulse shaping, both will make good choices. To show what I mean, here is a Monte Carlo analysis of 100 steps looks like for 1% resistors and 5% capacitors (left), and for 5% resistors and 10% capacitors:

Also, here's a random input with pulses of variable widths and how they are filtered by both Bessel (blue) and Gaussian (red) ideal filters, with fc=1.25 Hz:
